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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Массивы односвязных списков. http://www.cyberforum.ru/cpp-beginners/thread64545.html
Разработать прграмму работы с массивом односвязных списков. Программа должна содержать следующие процедуры, вызываемые из меню: - построение массива односвязных списков, вводя исходные данные из текстового файла; - удаление указанного элемента из всех списков, в которых он присутствует; - вывод массива списков. Кто может, помогите пожалуйста!!!
C++ строки Ввести символьную строку. Заменить в строке все первые буквы слов на соответствующие заглавные. Новых строк не создавать. Строку до и после преобразо¬вания вывести на экран http://www.cyberforum.ru/cpp-beginners/thread64538.html
бинарные файлы помагите с решением C++
Создать два бинарных файла, все числа, содержащиеся в обоих файлах одновременно, переписать в третий файл. Дополнительных массивов не использовать. Добавлено через 1 минуту непонимаю что такое бинарный файл. не приставляю что внутри.
C++ Количество интераций
#include<stdio.h> #include<math.h> float v(float x, float y) {return x*x*x+y-exp(-x-y*y)-1;} float dix(float a, float b, float (*v)(float x, float y), float eps, float d) { float t,z; z=v(d,a); if(v(d,a)*v(d,b)>0||eps<=0){printf("ERROR!");}
C++ Перевод числа из 10 в 2 сс http://www.cyberforum.ru/cpp-beginners/thread64526.html
Написать рекурсивную функцию перевода числа из 10 в 2 систему счисления. Помогите пожалуйста.
C++ О выборе переводчиков Всем привет! вот кто может написать что-нибудь подобающее ?? организации нужно нанять переводчиков для перевода с определенного мн-ва языков. Каждый их имеющихся переводчиков владеет некоторыми иностранными языками и требует определенную зарплату.требуется определить,каких переводчиков следует нанять,чтобы сумма расходов была минимальной. пожалуйста,кто напишет,комментарии не могли бы... подробнее

Показать сообщение отдельно
Attenti_ON
9 / 9 / 1
Регистрация: 17.11.2009
Сообщений: 51
17.11.2009, 00:36     Шейкерная сортировка двусвязного списка
Здравствуйте!
У меня возникла проблема с сортировкой двусвязного списка.

Получилось реализовать двусвязный список и отдельно Шейкер-сортировку (массива).

Помогите, пожалуйста, отсортировать список!

При сортировке элементов списка нужно использовать не перестановку значений полей данных, а изменение значений полей указателей (перенаправление связей между звеньями списка)

Вот мой список:
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);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru