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

Сортировка односвязного списка (нужно редактирование) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна помощь с программой http://www.cyberforum.ru/cpp-beginners/thread562268.html
ПРограмма должна выполнять расчет коэффициентов характеристического полинома квадратной матрицы
C++ Алгоритм нахождения ПРОСТЫХ чисел в файле Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл g, оставив только ПРОСТЫЕ числа. Порядок следования чисел сохранить. При обрабоке файла не использовать массив простых чисел. Файл у меня формирует, а вот как определить яляется ли число простым вопрос не такой простой :( Вот мой код: #include<stdlib.h> #include<stdio.h> int main... http://www.cyberforum.ru/cpp-beginners/thread562248.html
C++ Определить каких букв больше в строке: гласных или согласных и на сколько.
1)Ввести строку А с клавиатуры состоящую из заглавных русских букв. Определить каких букв больше: гласных или согласных и на сколько. Вывести все слова заканчивающиеся на букву "а". 2)Удалить все слова заканчивающиеся на "ия" из введенной строки. ПОЖАЛУЙСТА!!!
Кнут - деление длинных чисел C++
Нужна помощь в переводе алгоритма деления длинных чисел из книги: Д. Э. Кнут - Искусство Программирование Том 2 Получисленные Алгоритмы. Особенно интересен третий шаг, я никак не могу понять, что там имеется в виду. Мой код 4го шага: int q((static_cast<int>(num)*255+static_cast<int>(num))/v); int r((static_cast<int>(num)*255+static_cast<int>(num))%v); while(q!=255 ||...
C++ C++ http://www.cyberforum.ru/cpp-beginners/thread562233.html
Где закачать C++ для 64-разрядную Windows 7
C++ Индексы седловых точек Помогите пожалуйста! Буду премного благодарен за решение этой задачи на языке C++: Элемент матрицы назовём седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своём столбце или, наоборот, является наибольшим в своей строке и наименьшим в своём столбце. Для заданной целой матрицы размером nxm напечатать индексы всех её седловых точек. Ах да, если вас не... подробнее

Показать сообщение отдельно
Merovingian
54 / 54 / 5
Регистрация: 24.09.2011
Сообщений: 149
01.05.2012, 03:41     Сортировка односвязного списка (нужно редактирование)
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
void swap(Book* x, Book* y)
{
    string strtmp;
    unsigned int inttmp;
    strtmp = x->author;
    x->author = y->author;
    y->author = strtmp;
    strtmp = x->name;
    x->name = y->name;
    y->name = strtmp;
    inttmp = x->year;
    x->year = y->year;
    y->year = inttmp;
    inttmp = x->number;
    x->number = y->number;
    y->number = inttmp;
    inttmp = x->pages;
    x->pages = y->pages;
    y->pages = inttmp;
}
void sortByYear()    
{                       // Сортировка пузырьком
 
    Book * begin = first; //Начало очереди
    Book * current = first; //Текущая позиция в очереди
    char avtor[25]; //Переменная хранящая имя автора
    cout<<"Enter name avtor: ";
    cin>>avtor;
    for(current = first; current!=0; current = current->next)
        if(current->author==avtor)
            for(Book * current2 = current; current2!=0; current2=current2->next)
                if(current2->author==avtor)
                    if(current->year>current2->year)
                        swap(current,current2); // меняем местами
};
Вы меняли местами книги в списке, забыв об указателях. Нужно либо менять элементы списка местами и не забывать об указателях next, которые идут НА обмениваемые элементы, либо просто менять местами информационные поля, как сделал я в функции swap. Сделал я все по-тупому, за пару минут так что проверьте, но вроде работает. Было бы неплохо создать структуру data, а в неё уже поместить все информационные поля:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Book {
   Data* inf;
    Book* next;
    ...
};
struct Data
{
    string author;
    string name;
    unsigned int year;
    unsigned int number;
    unsigned int pages;
};
Тогда проще будет менять местами поля.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru