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

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

Войти
Регистрация
Восстановить пароль
 
turtLe
3 / 3 / 2
Регистрация: 11.11.2009
Сообщений: 41
#1

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

25.09.2010, 14:57. Просмотров 540. Ответов 5
Метки нет (Все метки)

Суть задания такова: создать односвязный список,ввести в него цифры и выдать их в отсортированном по возрастанию порядке на экран.
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;
}
В принципе код рабочий,но хотелось бы услышать замечания\предложения по оптимизации\дополнения и т.п
Структуры,как списки,только начали изучать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2010, 14:57     Список и его сортировка
Посмотрите здесь:

Список сортировка - C++
Составить список учащихся с указанием фамилии ,даты рождения ,пола и отсортировать список по алфавиту

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

Челночная сортировка / Список - C++
Я бы хотел попросить о помощи более опытных людей в програмирование. сам пробовал- не получилось. из-за не достатка опыта. а надо и...

Односвязный список. Сортировка по алфавиту - C++
У меня есть односвязный список.Раньше был двухсвязный но дали задание сделать на односвязный Работает,добавляет и удаляет. ...

Кольцевой односвязный список, сортировка - C++
Помогите, пожалуйста, с сортировкой списка. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; struct Node { int...

Двунаправленный список (добавление/удаление/сортировка) - C++
Задание: Необходимо создать двунаправленный список содержащий в себе информацию в виде &quot;Имя и номер телефона&quot; Операции которые должны...

Почему не работает сортировка? (кольцевой список) - C++
Подскажите ,почему не работает сортировка. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cctype&gt; ...

Сортировка методом выбора, односвязный список - C++
Добрый вечер. Такая проблема, срочно нужно сделать два задания, я сколько не пробовал - у меня ещё не получается, нужно в кратчайшие сроки....

Список. Сортировка и поиск по списку. Работа с файлами - C++
void Search_secondname(void) { Print_header(); cout &lt;&lt; &quot;Введите фамилию для поиска&quot; &lt;&lt; endl; int i = 0; char secondname; ...

После добавления элементов в список сортировка зависает - C++
Добрый день, поправьте пожалуйста сортировку, после добавления элементов в список сортировка зависает. вот сортировка void...


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

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

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