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

Сортировка связного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Локальная переменная масив не создаеться в вызваной функции http://www.cyberforum.ru/cpp-beginners/thread780114.html
Здравствуйте, Не укладывется в голове, после завершения рекурсий (т.е.контроль передаеться на if(ii==1){return 0;}) наступает цикл for где уже j=1. В итоге мы имеем измененный массив bool а={1,0}. Если кратко, то следующий код выводит на экран: a= 00 a= 10 a= 10 a= 10 a= 11 a= 11
C++ Непонятный код #define HEX__(n) 0x##n##LU #define B8__(x) ((x&0x0000000FLU)?1:0)\ +((x&0x000000F0LU)?2:0)\ +((x&0x00000F00LU)?4:0)\ +((x&0x0000F000LU)?8:0)\ +((x&0x000F0000LU)?16:0)\ +((x&0x00F00000LU)?32:0)\ +((x&0x0F000000LU)?64:0)\ +((x&0xF0000000LU)?128:0) http://www.cyberforum.ru/cpp-beginners/thread780111.html
C++ Запись трёхмерного массива string в файл
Задан массив string M, который в процессе работы будет ежедневно пополнятся новыми словами. Как его записывать в файл, чтобы было удобно читать и редактировать ? Подскажите, пожалуйста, кто знает или имеет какие-то мысли по этому вопросу.
Обработка исключений C++
Есть вопрос по заданию. С клавиатуры вводится номер ошибочной ситуации. В зависимости от того, какой номер введен, сгенерировать целочисельную, действительную или символьную ошибочную ситуацию. Создать обработчики этих ошибочных ситуаций. Создать функцию, которая генерирует целочисельную исключительную ситуацию. Помогите разобраться в задании. Нужно ввести с клавиатуры число или символ, и в...
C++ генерация чисел http://www.cyberforum.ru/cpp-beginners/thread780076.html
Скажите, пожалуйста, как сгенерировать случайным образом отрицательные числа?
C++ Объясните данный алгоритм/функцию http://rabus.ru/mc/methodOfCoord.html#prim_1 Собственно каким образом это должно происходить? Как вообще и на основании чего это работает? Что там происходит, можете описать мне последовательность что с чем и каким образом? подробнее

Показать сообщение отдельно
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
06.02.2013, 01:20     Сортировка связного списка
Сортировка через значения и с помощью указателей
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
#include <iostream>
#include <random>
 
struct Node
{
    int value;
    Node *next;
};
 
void insertItem(Node *posItem, int value)
{
    Node *item = new Node;
    item->value = value;
    item->next = posItem->next;
    posItem->next = item;
}
 
void deleteNode(Node *startItem)
{
    Node *item = startItem->next;
    while (item != startItem) {
        startItem->next = item->next;
        delete item;
        item = startItem->next;
    }
    delete startItem;
}
 
void sortByValues(Node *startItem)
{
    for (Node *i = startItem->next; i->next != startItem; i = i->next)
        for (Node *j = startItem->next; j->next != startItem; j = j->next)
            if (j->value > j->next->value) {
                int buf = j->value;
                j->value = j->next->value;
                j->next->value = buf;
            }
}
 
void sortByLinks(Node *startItem)
{
    for (Node *i = startItem->next; i != startItem; i = i->next)
        for (Node *j = startItem; j->next->next != startItem; j = j->next)
            if (j->next->value > j->next->next->value) {
                Node *buf = j->next;
                j->next = j->next->next;
                i = j->next;
                buf->next = j->next->next;
                j->next->next = buf;
            }
}
 
void printNode(Node *startItem)
{
    for (Node *i = startItem->next; i != startItem; i = i->next)
        std::cout << i->value << std::endl;
}
 
int main()
{
    Node *startItem = new Node,
         *currItem = startItem;
    startItem->next = startItem;
    std::random_device rand;
    std::mt19937 gen(rand());
    std::uniform_int_distribution <> distr(-10, 30);
    for (int i = 0; i < 10; i++) {
        insertItem(currItem, distr(gen));
        currItem = currItem->next;
    }
    std::cout << "Before:" << std::endl;
    printNode(startItem);
    sortByLinks(startItem);
    std::cout << "After:" << std::endl;
    printNode(startItem);
    deleteNode(startItem);
    return 0;
}
 
Текущее время: 08:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru