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

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

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

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

25.09.2010, 14:57. Просмотров 553. Ответов 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++):

Вводится число N. Создать список его делителей и вывести список на экран - C++
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; using namespace std; struct...

Организовать новый список из различных элементов заданного, включив в информационную часть узла количество его вхождения в первоначальный список - C++
Организовать новый список из различных элементов заданного, включив в информационную часть узла количество его вхождения в первоначальный...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
А как бы вы сортировали массив? Вот и с элементами списка примерно то же самое проделайте
Неужели это трудно сделать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2010, 15:24
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.09.2010, 15:24
Ответ Создать тему
Опции темы

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