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

Сортировка списка слов - C++

Восстановить пароль Регистрация
 
wse
Сообщений: n/a
26.04.2013, 20:04     Сортировка списка слов #1
Каждый элемент списка содержит динамический массив типа char {char*}. Массив хранит слово на латинице. Пользователь вводит кол-во элементов и перечисляет слова, которые нужно поместить в список.

Задача:
Упорядочить список по возрастанию, не используя дополнительных списков. То есть изменяя имеющийся.
Вывести на экран результат и последовательно удалить все элементы списка. При удалении элементов не забываем освобождать память у динамических массивов.

Алгоритм:
Реализовать функцию AddToSort(first,value). Вставка в упорядоченный список.
Начинаем со второго элемента списка, сравниваем значение с предыдущим. Если текущее значение меньше предыдущего, то вырезаем элемент из списка и вставляем, используя AddToSort.

Для сравнения строк используем strcmp(char1,char2)
Функция возвращает целочисленное значение:
- больше нуля, если первая строка больше второй;
- 0 (нуль), если строки равны;
- меньше нуля, если первая строка меньше второй.

Вот мой кодно он не работает,помогите пж. исправить)


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
#include <iostream>
#include <iomanip>
#include <locale>
#include <cstring>
using namespace std;
 
struct comp
{
char* data;
comp *next;
};
 
void AddToSort(comp *&first, char value[40]) 
{ 
comp *P = new comp;
int q=0;
while (value[q])
q++;
char*a=new char[q];
q=0;
while (value[q])
a[q]=value[q++];
a[q]=NULL;
P -> data = a;
P->next=NULL;
if(!first)
first = P;
else
if(strcmp(first -> data,value)>=0)
{
P -> next = first;
first = P;
}
else
{
comp *t = first;
while(t->next!= NULL && (strcmp(t ->next-> data,value)<0))
t = t -> next;
P->next=t->next;
t->next=P;
}
}
void delcomp(comp *&first)
{
comp *t = first;
if(first)
while (first)
{
comp*buf=first;
first=first->next;
 
delete buf;
}
}
 
void showcomp(comp *first)
{
comp *temp = first;
if(first)
while(temp)
{
cout<<temp -> data << " ";
temp = temp -> next;
}
else
cout <<"Spisok pust!"<<endl;
cout<<endl;
}
 
int main()
{ comp *Head=NULL;
int s;
char w[40];
cout<<"Vvedite s: ";
cin>>s;
for(int i = 0; i < s; i++){
cout<< "Vvedite slovo : ";
cin>>w;
AddToSort(Head, w);
}
cout<< "Gotoviy spisok: ";
showcomp(Head);
delcomp(Head);
showcomp(Head);
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 20:04     Сортировка списка слов
Посмотрите здесь:

Сортировка списка C++
C++ Сортировка списка
C++ Случайный выбор из списка слов
Сортировка списка C++
Сортировка списка C++
Сортировка списка C++
C++ Сортировка списка слов
C++ Сортировка списка
Дан список слов различной длины. Составить программу упорядочения списка слов: По их длине; По алфавиту C++
C++ Сортировка списка
Сортировка списка C++
C++ Сортировка списка

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

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

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