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

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

Восстановить пароль Регистрация
 
turtLe
3 / 3 / 2
Регистрация: 11.11.2009
Сообщений: 41
25.09.2010, 14:57     Список и его сортировка #1
Суть задания такова: создать односвязный список,ввести в него цифры и выдать их в отсортированном по возрастанию порядке на экран.
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
#include <iostream>
using namespace std;
 
struct list
{
        int key;
    list *next;
};
 
list *addList(list *start);
list *sort(list *start);
void printList(list *start);
 
list *addList(list *start)
{
        list *temp;
        temp=new list;
        cin >> temp->key;
        temp->next=start;
        start=temp;
 
        return start;
}
 
void printList(list *start)
{
        list *now=start;
 
        while(now!=NULL)
        {
                cout << now->key << "\t";
                now=now->next;
        }
 
}
 
list *sort(list *start)
{
    list *now=start;
    list *p=new list;
    bool t=true;
    
    while(t)
    {
        t=false;
        while(now->next!=NULL)
        {
            if (now->key>now->next->key)
            {
                p->key=now->key;
                now->key=now->next->key;
                now->next->key=p->key;
                t=true;
            }
            now=now->next;
        }
    }       
        return start;
 
}
 
int main()
{
        list *start;
        start=new list;
    cout<<"Enter 1st number at list: ";
        cin >> start->key;
        start->next=NULL;
 
        int listSize;
    cout<<"Enter size of lise: ";
        cin >> listSize;
 
        for(int i=0;i<listSize-1;i++)
                start=addList(start);
    for(int i=0;i<listSize-1;i++)
        sort(start); 
        printList(start);
    delete start;
        system("pause");
        return 0;
}
В принципе код рабочий,но хотелось бы услышать замечания\предложения по оптимизации\дополнения и т.п
Структуры,как списки,только начали изучать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
26.09.2010, 03:43     Список и его сортировка #2
Цитата Сообщение от turtLe Посмотреть сообщение
for(int i=0;i<listSize-1;i++)
sort(start);
Просто sort(start) не работает, да? И это понятно почему. Найдёшь ошибку сам?

delete start не удаляет весь список, а только один элемент. Напиши удаление всего списка.

Там ещё куча всего, но исправь пока эти два момента.
turtLe
3 / 3 / 2
Регистрация: 11.11.2009
Сообщений: 41
26.09.2010, 11:02  [ТС]     Список и его сортировка #3
C++
1
2
delete[] start;
start=0;
О_о?
или же проходиться циклом,обращаясь к каждому элементу и удалять его?
По-другому реализовать сортировку у меня не получается =(
Подскажите куда стоит обратить внимание.
chesser
17 / 17 / 1
Регистрация: 02.08.2010
Сообщений: 44
26.09.2010, 14:40     Список и его сортировка #4
Что-то вроде такого надо сделать:
C++
1
2
3
4
5
6
7
8
9
10
void delList(lst *&start)
{lst *t, * p=start;
 
 while (p!=NULL)
 {t=p->next;
  delete p;
  p=t;
 }
 start=NULL;
}
turtLe
3 / 3 / 2
Регистрация: 11.11.2009
Сообщений: 41
26.09.2010, 15:10  [ТС]     Список и его сортировка #5
с этим все понятно,а вот насчет сортировки..пытался сделать,чтобы не приходилось вызывать for(),но так ничего и не получилось,что можете подсказать?
chesser
17 / 17 / 1
Регистрация: 02.08.2010
Сообщений: 44
26.09.2010, 15:24     Список и его сортировка #6
А как бы вы сортировали массив? Вот и с элементами списка примерно то же самое проделайте
Неужели это трудно сделать?
Yandex
Объявления
26.09.2010, 15:24     Список и его сортировка
Ответ Создать тему
Опции темы

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