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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
06041992
0 / 0 / 0
Регистрация: 06.01.2012
Сообщений: 13
#1

Сортировка двусвязного списка - C++

20.02.2012, 22:02. Просмотров 1912. Ответов 0
Метки нет (Все метки)

Разработать программу учета продажи и поступления товаров в магазин. Перечень товаров, имеющихся в магазине, оформить в виде линейного двусвязного списка. Предусмотреть возможность сортировки товаров по цене.
Код ниже. Зависает на условии в сортировке. Правильно ли определены указатели?
Среда Borland C.


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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
 
 
struct Element {
char Name[20];
float price;
Element *Next;
Element *Previous;
};
 
 
class list
{
Element *begin,*end;
public:
int n;
void Add(void);
void Show (void);
void Sort(void);
void Menu(void);
list(){
begin=end=NULL;
};
 
~list()
{
Element *del;
while (begin)
{
del=begin;
begin = begin->Next;
delete del;
}
};
};
 
void list::Add(void)
{ Element *part= new Element;
cin >> part->Name;
cin >> part->price;
part->Next=NULL;
if (begin==NULL)
begin=part;
else
{
end->Next=part;
part->Previous=end;
}
end=part;
}
 
void list::Show(void)
{ Element *part=begin;
while (part!=NULL)
{
cout<<"\n "<<part->Name;
cout<<"\n "<<part->price;
cout<<"\n";
part=part->Next;
}
if(begin==NULL) cout<<"\n Empty \n";
getch();
}
 
void list::Sort(void)
{ Element *count,*prev;
int i=0,j;
count=begin;
prev=begin;
while (count->Next!=NULL)
{
for (j=0;j<n-i-1;j++)
if (count==begin&&(count->price >= count->Next->price))
{ prev=count;
count=count->Next;
prev->Previous=count;
prev->Next=count->Next;
count->Previous=NULL;
count->Next=prev;
}
if (count!=begin&&(count->price >= count->Next->price))
{prev=count;
prev->Previous=count->Next;
prev->Next=count->Next->Next;
count=count->Next;
count->Next=prev;}
i++;
}
getch();
}
 
 
void list::Menu(void)
{
list product;
int key;
clrscr();
do {
cout<<" 1 - Add\n"
<<" 2 - Sort*\n"
<<" 3 - Show \n"
<<" Esc - Exit \n";
 
key=getch();
switch (key) {
case 49 :
product.Add();
break;
case 50 :
product.Sort();
break;
case 51 :
product.Show();
break;
} clrscr();
} while (key!=27);
}
 
main()
{
list T;
T.Menu();
return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2012, 22:02     Сортировка двусвязного списка
Посмотрите здесь:

Шейкерная сортировка двусвязного списка - C++
Здравствуйте! У меня возникла проблема с сортировкой двусвязного списка. Получилось реализовать двусвязный список и отдельно...

Быстрая сортировка двусвязного списка - C++
что не так?? void newsort(Offender_Node*first,Offender_Node*last) { Offender_Node*cur=first,*Prev=cur; ...

Сортировка двусвязного списка вставками - C++
Добрый день, есть готовый двусвязный список. Нужно было реализовать сортировку вставками любых чисел. В комментариях main() оставил...

Сортировка кольцевого двусвязного списка (пузырьковая) - C++
Доброго дня! Помогите пожалуйста разобраться с сортировкой кольцевого двухсвязного списка. У меня при попытке отсортировать выводит ошибку ...

Передача параметров в функцию (сортировка двусвязного списка) - C++
Дан работающий код (двусвязный список+сортировка его пузырьком) Нужно выделенную часть оформить в отдельную функцию. я делаю три...

Сортировка двусвязного списка, по мере поступления информации - C++
Помогите отсортировать двусвязный список следующим образом: &quot;элементы добавлять таким образом, чтобы сохранялась упорядоченность списка по...

Реверс двусвязного списка - C++
Столкнулся с задачей написать функцию реверса двусвязного списка. Часа 3 сушил себе мозг с копиями указателей, получилось что надо хранить...

Создание двусвязного списка - C++
Не понимаю как его создать. И как сделать стандартные операции над списком(удаление, добавление и т.д). Сколько сайтов переползал, все...

Итератор двусвязного списка - C++
Добрый день. Проблема: Есть итератор для двусвязного списка. Реализован метод вывода списка с головы, но не получается реализовать метод...

Cортировка двусвязного списка - C++
Ну, в общем задание в названии. Нужно отсортировать двусвязный список, методом пузырька. Сортировку-то я эту знаю. Но вот проблема, я не...

Функция удаления из двусвязного списка - C++
Создал двусвязный список на основе класса, работают ввод элементов в список и вывод всего списка. Помогите пожалуйста с функцией удаления...

Удаление структуры из двусвязного списка - C++
Доброго времени суток! Пытаюсь создать функцию удаления из списка структуры, не выполняется цикл while в функции del() в чем я не прав? ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru