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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Attenti_ON
9 / 9 / 1
Регистрация: 17.11.2009
Сообщений: 51
#1

Шейкерная сортировка двусвязного списка - C++

17.11.2009, 00:36. Просмотров 2362. Ответов 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
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
struct Color
{
    int Name;
    Color *Next;
        Color *Pred;
};
Color *Head = NULL;
Color *Rear = NULL;
Color *Ptr = NULL;
 
//-------------------------------------------------------------------
void Create(int Name)
{
    Color *NewPtr;
    NewPtr = new Color;
    if (!Head) Head = NewPtr;
    else Rear->Next = NewPtr;
        NewPtr->Pred = Rear;
        NewPtr->Name = Name;
        NewPtr->Pred=Rear;
        Rear = NewPtr;
    Rear->Next = NULL;
}
//---------------------------------------------------------------------
void Print(void)
{
    Color *Index = Head;
    while (Index)
    {
        cout << Index->Name << endl;
        Index = Index -> Next;
    }
    cout<<endl;
}
//--------------------------------------------------------------------
void Clear()
{
Rear == NULL;
    while (Head)
    {
        Ptr = Head -> Next;
        delete Head;
        Head = Ptr;
    }
}
//----------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
char newname[10];
Create(6);
Create(2);
Create(3);
Create(5);
Create(3);
Create(2);
Create(9);
Create(1);
 
Print();
cout<<endl;
Clear();
getch();
    return 0;
}
И реализация Шейкер-сортировки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int ilast = n - 1;
int ll = 1;
int kk = n - 1;
  do {
         for (j = kk; j >=ll; j--)
           if (a[j-1]>a[j])
             {
                temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
                ilast = j;
             }
        ll = ilast + 1;
         for (j = ll; j<=kk; j++)
           if (a[j-1]>a[j])
             {
                temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
                ilast = j;
             } 
        kk = ilast - 1; }
   while (ll < kk);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2009, 00:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шейкерная сортировка двусвязного списка (C++):

"Сортировка двусвязного списка путем исключения элемента с минимальным значением и включения его в начало нового списка - C++
Здравствуйте! Возникла проблема с программой. Тема: &quot;Сортировка двусвязного списка путем исключения элемента с минимальным значением и...

Быстрая сортировка двусвязного списка - C++
что не так?? void newsort(Offender_Node*first,Offender_Node*last) { Offender_Node*cur=first,*Prev=cur; ...

Сортировка двусвязного списка вставками - C++
Добрый день, есть готовый двусвязный список. Нужно было реализовать сортировку вставками любых чисел. В комментариях main() оставил...

Сортировка кольцевого двусвязного списка (пузырьковая) - C++
Доброго дня! Помогите пожалуйста разобраться с сортировкой кольцевого двухсвязного списка. У меня при попытке отсортировать выводит ошибку ...

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

Передача параметров в функцию (сортировка двусвязного списка) - C++
Дан работающий код (двусвязный список+сортировка его пузырьком) Нужно выделенную часть оформить в отдельную функцию. я делаю три...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Attenti_ON
9 / 9 / 1
Регистрация: 17.11.2009
Сообщений: 51
22.11.2009, 20:20  [ТС] #2
Помогите, пожалуйста! Ничего не выходит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2009, 20:20
Привет! Вот еще темы с ответами:

Шейкерная сортировка + сортировка слиянием - C++
вот часть когда,которая выполняет шейкерную сортировку : для символьного и целочисленого массива . // ConsoleApplication15.cpp:...

Шейкерная сортировка массива - C++
Не удается с внизсходящего поменять сортировку на вверхсходящую #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;time.h&gt; ...

Шейкерная сортировка без использования while цикла - C++
Ребят, сделал шейкерную сортировку через два вложенных цикла - не работает. Не могу понять в чем проблема, подскажите пожалуйста. ...

Шейкерная сортировка массива (в виде функции) - C++
Выполнить сортировку целочисленного массива(поиск в массиве) из n элементов. Алгоритм сортировки(поиска) Шейкер-сортировка, оформить в виде...


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

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

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