Форум программистов, компьютерный форум CyberForum.ru

Абстрактный тип данных - C++

Восстановить пароль Регистрация
 
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
08.11.2013, 04:38     Абстрактный тип данных #1
Доброго времени суток! Помогите, пожалуйста, с заданием:
Создать список произвольной организации. Областью данных каждого элемента является строка, содержащая название геометрической фигуры, и площадь этой фигуры. Отсортировать все элементы списка в порядке убывания по названиям фигур (длиной строки) и затем в порядке возрастания по величине занимаемой площади (имеется в виду одноименные фигуры).
P.S. или дайте другие примеры программ, организованных по принципу "FIFO" или "LIFO"...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11801 / 6780 / 765
Регистрация: 27.09.2012
Сообщений: 16,833
Записей в блоге: 2
Завершенные тесты: 1
08.11.2013, 05:19     Абстрактный тип данных #2
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
Помогите, пожалуйста
Давайте свое решение, поможем
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
08.11.2013, 06:16     Абстрактный тип данных #3
А при чем тут вообще последняя фраза про фифо-лифо? Фифо и лифо это не просто список, а очередь и стек соответственно!
Сортировать их бессмысленно, если соблюдается правило фифо(лифо).
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
08.11.2013, 19:41  [ТС]     Абстрактный тип данных #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А при чем тут вообще последняя фраза про фифо-лифо? Фифо и лифо это не просто список, а очередь и стек соответственно!
Сортировать их бессмысленно, если соблюдается правило фифо(лифо).
я просто читал о АТД и подумал, что задание связанное именно с этим... извините, ошибся значит... спасибо, за отзыв

Добавлено через 12 часов 51 минуту
значит нужно использовать двунаправленный список, на сколько я понял, да?
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
08.11.2013, 19:59     Абстрактный тип данных #5
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
Создать список произвольной организации
Список, судя по заданию, может быть любой структуры, главное чтобы вы смогли его отсортировать)
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
08.11.2013, 20:18     Абстрактный тип данных #6
сортировка пузырьком односвязного списка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
struct tElem{
    string name;
    int area;
    tElem *next;
};
tElem* sort_list_by_area(tElem *start){
   tElem *list_ptr;
   tElem *pre_ptr=NULL;
   bool run=true;
   while (run){
       run=false;
       list_ptr=start;
       while (list_ptr->next)
       {
           if (list_ptr->area > list_ptr->next->area){
               if (list_ptr==start){
                    start=list_ptr->next;
                    list_ptr->next=start->next;
                    start->next=list_ptr;
                }
                else{//все остальные случаи
                 pre_ptr->next=list_ptr->next;
                 list_ptr->next=list_ptr->next->next;
                 pre_ptr->next->next=list_ptr;
                }
                run=true;
               }
               pre_ptr=list_ptr;
               list_ptr=list_ptr->next;
            }
        } 
    return start;
}
tElem* make_list(int size){
    tElem* start=NULL;
    while (size--){
        tElem* e=new tElem;
        e->next=start;
        e->area=rand()%90+10;
        start=e;
    }
    return start;
}
void clear_list(tElem* start){
    if (start->next) clear_list(start->next);
    delete start;
}
void print_list(tElem* start){
    for(tElem* i=start; i!=NULL; i=i->next)
      cout<<" "<<i->area;
}
int main()
{
    srand(time(NULL));
    tElem* Mylist=make_list(10);
    print_list(Mylist);
    cout<<endl;
    Mylist=sort_list_by_area(Mylist);
    print_list(Mylist);
    clear_list(Mylist);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 21:38     Абстрактный тип данных
Еще ссылки по теме:

C++ Абстрактный тип данных
C++ Абстрактный тип данных
Абстрактный тип данных C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
08.11.2013, 21:38  [ТС]     Абстрактный тип данных #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
сортировка пузырьком односвязного списка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
struct tElem{
    string name;
    int area;
    tElem *next;
};
tElem* sort_list_by_area(tElem *start){
   tElem *list_ptr;
   tElem *pre_ptr=NULL;
   bool run=true;
   while (run){
       run=false;
       list_ptr=start;
       while (list_ptr->next)  \\ошибка при компиляции
       {
           if (list_ptr->area > list_ptr->next->area){
               if (list_ptr==start){
                    start=list_ptr->next;
                    list_ptr->next=start->next;
                    start->next=list_ptr;
                }
                else{//все остальные случаи
                 pre_ptr->next=list_ptr->next;
                 list_ptr->next=list_ptr->next->next;
                 pre_ptr->next->next=list_ptr;
                }
                run=true;
               }
               pre_ptr=list_ptr;
               list_ptr=list_ptr->next;
            }
        } 
    return start;
}
tElem* make_list(int size){
    tElem* start=NULL;
    while (size--){
        tElem* e=new tElem;
        e->next=start;
        e->area=rand()%90+10;
        start=e;
    }
    return start;
}
void clear_list(tElem* start){
    if (start->next) clear_list(start->next);
    delete start;
}
void print_list(tElem* start){
    for(tElem* i=start; i!=NULL; i=i->next)
      cout<<" "<<i->area;
}
int main()
{
    srand(time(NULL));
    tElem* Mylist=make_list(10);
    print_list(Mylist);
    cout<<endl;
    Mylist=sort_list_by_area(Mylist);
    print_list(Mylist);
    clear_list(Mylist);
    return 0;
}
ошибка при компиляции: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000020
Yandex
Объявления
08.11.2013, 21:38     Абстрактный тип данных
Ответ Создать тему
Опции темы

Текущее время: 14:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru