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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как поставить условие http://www.cyberforum.ru/cpp-beginners/thread354039.html
Есть переменные: x1, x2, y1, y2. И нужно сделать следующее: Прибавить к x1 единицу (++x1) в том случае если выполняется одно из условий: 1) x1 не равен x2 и y1 не равен y2 2) x1 равен x2 или y1 равен y2 Я как то запутался.
C++ Найти произведение элементов вектора Всем форумчанинам привет, прошу помощи решения задачи Задача: Найти произведение элементов вектора (массивы не использовать, значения перемножать по мере ввода). http://www.cyberforum.ru/cpp-beginners/thread354031.html
Простая база данных с помощью массива C++
здравствуйте. Помогите пожалуйста, можете написать пример простейшей базы данных созданной с помощью массива. База состоит из 3-5 строк,в каждой из которых фио и год рождения.операции с базой данных :поиск (по году рождения),удаление записи и добавление в любое место записи. Всем кто сможет помочь,огромное спасибо заранее! ну язык С++ конечно:)
C++ Определить дату предыдущего дня
Все доброго времени суток. Нужна помощь в решении задачи. Заранее огромное спасибо. Вот собственно и задача: "Дата некоторого дня определяется двумя натуральными числами: порядковым номером месяца и числом. Определить дату предыдущего дня."
C++ идеальное хеширование http://www.cyberforum.ru/cpp-beginners/thread353967.html
В лабораторной работе задание "реализовать идеальное хеширование". в методичке очень мало материала по хешированию и по данному вопросу в частности. Посоветуйте какую-нибудь литературу или статью по этой теме, где все объясняется с нуля.
C++ MS VS in CODE BLOCKS Делал проекты в VISUAL C++ EXPRESS. Сеичас пересел на LINUX, пользуюсь CODE BLOCKS . Есть какие-нибудь варианты как открыть проекты написанные в VS C++ - в CODE BLOCKS? ПС: не нужно писать типа ты че парень VS ето под вин и т.д. (если проблема открытия в этом) Спасибо. подробнее

Показать сообщение отдельно
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
02.10.2011, 12:44  [ТС]     Сортировка вставками в односвязном списке
Подниму вновь тему так как что-то не могу разобраться с сортировкой для своего односвязного списка, запутываюсь я что-то в указателях при сортировке и всё тут.
Список и указатели на Head и Tail:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Students
{
    struct ListItem
    {
        string fullname;
        string group;
        int year;
        int average;
        ListItem *Next;
    };
 
    ListItem *Head;
    ListItem *Tail;
    ListItem *Current; //указатель на текущий элемент
 
 
    void sort(bool cmp(string&,string&));
    void swap(ListItem* first, ListItem* second);
Функция по сравнению строк из main:
C++
1
2
3
4
bool cmp( string &str1, string &str2 )
{
    return strcmp( str1.c_str(), str2.c_str() ) < 0;
}
Ну и мои попытки отсортировать методом прямого выбора + код метода swap:
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
void Students:: sort(bool cmp(string&,string&))
{
    ListItem * i,*j,*k,*min;
    for(i=Head;i!=Tail;i=i->Next)
    {
        k=i; //начальное значение индекса минимального элемента
        min=i; //начальное значение минимального элемента
        for(j=i->Next;j;j=j->Next)
        if(cmp(j->fullname,min->fullname))
        {
            k=j;
            min=j;
        }
        swap(i,min);
        swap(k,i);
    }
}
 
 
 
void Students::swap(ListItem *first, ListItem *second)
{
    ListItem* temp;
    ListItem* fnext;
    temp=first;
    fnext=first->Next;
    first=second;
    first->Next=second->Next;
    second=temp;
    second->Next=fnext;
 
}
Насчёт того нужна ли именно такая реализация swap для этой сортировки я ещё не уверен... Напомню также что менять мне нужно элементы списка ЧЕРЕЗ УКАЗАТЕЛИ, а не через информационные части, информ. части я и сам могу поменять.

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