9 / 9 / 0
Регистрация: 07.01.2012
Сообщений: 61
1

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

14.04.2012, 15:37. Показов 15190. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не получается выполнить сортировку двусвязного списка методом пузырька. У меня получилось сделать только один заход, а их надо несколько.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct LIST
{
    int info;
    LIST* next;
    LIST* prev;
};
 
void sort(LIST *i, LIST *start, LIST *last)
{
    int tmp=0;
    i=start;
    if((i->info)>(i->next->info))
    {
        tmp=i->info;
        i->info=i->next->info;
        i->next->info=tmp;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2012, 15:37
Ответы с готовыми решениями:

Сортировка двусвязного списка
Доброго дня! Помогите, пожалуйста, разобраться, что я делаю не так. Задание: разработать...

Сортировка двусвязного списка пузырьком
Есть структура: struct stud{ char num; char tel; char name; int byear; int bday; int...

Быстрая сортировка двусвязного списка
Уважаемые ! Продолжаются мое обучение, а с ним и появляются новые вопросы. Пытаюсь остортировать...

Сортировка двусвязного списка - исправить ошибку в коде
Попыталась осуществить сортировку списка, подскажите, пожалуйста, где ошибки в коде struct List {...

3
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
14.04.2012, 16:15 2
Сделай флаг, говорящий, были ли на текущем проходе перестановки и гоняй тело своей функции в цикле, пока он истинен.

Не по теме:

Зачем передавать в sort i?

1
9 / 9 / 0
Регистрация: 07.01.2012
Сообщений: 61
14.04.2012, 20:08  [ТС] 3
Попробую.

Не по теме:

Просто делал по примеру другой функции. Да, кстати, и без этого работает.



Добавлено через 3 часа 4 минуты
Спасибо, всё получилось. Вот код(мало-ли кому-нибудь понадобится):
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
void sort(LIST *start)
{
    LIST *tmp;
    LIST *a;
    int t=0;
    bool flag=1;
    while(flag==1)
    {
        tmp=start;
        a=tmp->next;
        flag=0;
        while(a)
        {
            if((tmp->info)>(a->info))
            {
                t=tmp->info;
                tmp->info=a->info;
                a->info=t;
                flag=1;
            }
            tmp=tmp->next;
            a=a->next;
        }
    }
}
5
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
23.04.2017, 12:09 4
Kirill43rus, Спасибо огромное за это сообщение!!!!!! Аж расцеловать захотелось! 2 полных дня кропел над подобным (ну я еще менять сами адреса пробовал, и таким методом сортировать) но в любом плане, ОГРОМНОЕ СПАСИБО ЗА ТО ЧТО НАПИСАЛ СООБЩЕНИЕ С СОРТИРОВКОЙ!!!!
0
23.04.2017, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2017, 12:09
Помогаю со студенческими работами здесь

Из двусвязного списка в односвязный
Помогите пожалуйста переделать программу из двусвязного списка в односвязный (если не сложно) z.h...

Создание, правка, и сохранение двусвязного списка
Добрый день. Не судите строго, только учусь. нужно сделать программу для Создание, правка, и...

Сделать ввод и вывод двусвязного списка
Мне нужно сделать воод и вывод двусвязного списка. Вот что я сделал, но у меня вывод неработает: ...

База данных в Си на основе двусвязного списка
Доброго времени суток! Мне было дано задание: написать базу(см. заголовок) и простое меню с...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru