Форум программистов, компьютерный форум 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
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
02.10.2011, 16:22  [ТС]     Сортировка вставками в односвязном списке
Цитата Сообщение от talis Посмотреть сообщение
То есть, в любом случае нужно знать адрес предыдущего элемента.
Мммм, ну да, я подзабыл что при моём обмене ссылок нужно ещё и пред. элемент сделать чтобы указывал на новые изменённые данные ... тем не менее преподаватель точно говорил что мол чтобы мы ему меняли только указатели, а не информационные части... есть вариант как реализовать максимально эффективную сортировку в односвязном списке с заменой только указателей? У меня из задания так уже всё реализовано, кроме сортировки ...
Можно в принципе хранить адрес ещё и предыдущего предыдущему элементу но такой алгоритм учитывающий всё у меня что-то тоже не получается ...

Добавлено через 2 часа 26 минут
Вроде написал какую-то сортировку, не знаю только как её назвать, я пока её называю "работающая сортировка"
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
void Students:: sort(bool cmp(string&,string&))
{
    ListItem* new_begin=NULL;
    ListItem* new_end=NULL;
    ListItem* sprev=NULL;
 
    for(ListItem *scur=this->Head;scur!=NULL;scur=this->Head)
    {
        ListItem *smin=NULL;
        ListItem *sminprev=scur;
        string min_name=scur->fullname;
        for(ListItem *gp=scur->Next;gp!=NULL;gp=gp->Next)
        {
            if(cmp(gp->fullname,min_name))
            {
                min_name=gp->fullname;
                smin=gp;
                sprev=sminprev;
            }
            sminprev=gp;
        }
        if(smin==NULL)
        {
            smin=scur;
        }
        else if(smin==scur->Next)
        {
            scur->Next=scur->Next->Next;
        }
        else
        {
            sprev->Next=smin->Next;
        }
        if(new_begin!=NULL)
        {
            new_end->Next=smin;
            new_end=smin;
        }
        else
        {
            new_begin=smin;
            new_end=smin;
        }
        if(smin==this->Head)
         this->Head=smin->Next;
    }
    this->Head=new_begin;
    this->Tail=new_end;
 
}
 
Текущее время: 04:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru