Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
Kirill43rus
9 / 9 / 0
Регистрация: 07.01.2012
Сообщений: 61
1

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

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

Не получается выполнить сортировку двусвязного списка методом пузырька. У меня получилось сделать только один заход, а их надо несколько.
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2012, 15:37
Ответы с готовыми решениями:

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

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

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

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

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

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

Не по теме:

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

1
Kirill43rus
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
Rec_cm
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97
Завершенные тесты: 1
23.04.2017, 12:09 4
Kirill43rus, Спасибо огромное за это сообщение!!!!!! Аж расцеловать захотелось! 2 полных дня кропел над подобным (ну я еще менять сами адреса пробовал, и таким методом сортировать) но в любом плане, ОГРОМНОЕ СПАСИБО ЗА ТО ЧТО НАПИСАЛ СООБЩЕНИЕ С СОРТИРОВКОЙ!!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2017, 12:09

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

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

Осуществить циклический сдвиг элементов двусвязного списка на k позиций вправо
Осуществить циклический сдвиг элементов двусвязного списка на k позиций вправо.


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

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

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