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

Не срабатывает функция сортировки связного списка - C++

Восстановить пароль Регистрация
 
Mariner
7 / 0 / 1
Регистрация: 31.12.2012
Сообщений: 6
23.05.2013, 18:18     Не срабатывает функция сортировки связного списка #1
Добрый день!
Не срабатывает функция сортировки связного списка. Как студент, буду благодарен за указания, в чём дефекты функции.

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
 
 /* элемент списка*/
    typedef struct client {
        int number; /* */
        int balance;/* */
        char lastName[20]; /* */
        char firstName [20];/* */
        char phone[11]; /* */
        char email[20];
        struct client *prev;/* */
        struct client *next; 
        struct client *tmp;     /* */
    
    } Client;
    Client *firstc,*currentc,*newc, *a, *b,*tmp;  /*указатели*/
    /* *firstc первый элемент в списке
       *currentc текущий узел
       *newc адрес вновь выделенного узла
       *a временный указатель для функции Sort
       *b временный указатель для функции Sort
       *tmp временный указатель для функции Sort
    */
    int counter = 0;
    int cnum = 0; /*cnum gives unique account numbers avoiding misentering*/
 
/*---функция сортировки------*/ 
 
void Sort()
{
    /*объявлена переменная - счётчик для  
    операций цикла сортировки */
    int a = 0;/*переменные для поля balance*/
    int b = 0;/**/
    if(firstc==NULL)
         printf("Database is empty"); /*сообщение*/
          
    else 
        currentc = firstc;
        currentc->prev = NULL;
        tmp = NULL;
 
    while((currentc=currentc->next)!= NULL)
        {   /* 1) сравнить два рядом расположенных узла;
               2) ЕСЛИ значение больше*/
            int a = currentc->balance;
            int b = currentc->next->balance;/*дебаггер останавливает в этой точке, потому что дальше нет узла,
            а точки остановки нет?*/                        
            
            if (a>b)
            //if(currentc->balance >currentc->next->balance)
            {   /*......выполнить перестановку узлов*/
 
            /*здесь должен быть код, использующий три указателя*/
            tmp = currentc->next;
            currentc->next->next = currentc->next;
            currentc->next->next = tmp;
                
            }
            /*3)продвинуться дальше по списку*/
            else
                currentc = currentc->next;
            
            /*4) повторить до окончания списка*/
        }   
        currentc = firstc;
        listAll();
        return;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 18:18     Не срабатывает функция сортировки связного списка
Посмотрите здесь:

C++ Реализация связного списка
Ошибка в Классе связного списка C++
функция для нахождения длины связного списка C++
Сортировка связного списка C++
C++ сортировка связного списка
C++ Реализация связного списка
C++ Функция сортировки вектора и списка
C++ Каковы варианты сортировки связного списка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mariner
7 / 0 / 1
Регистрация: 31.12.2012
Сообщений: 6
15.06.2013, 14:21  [ТС]     Не срабатывает функция сортировки связного списка #2
Сам себе, чтобы закрыть вопрос.
Функция неправильная. Работать не могла.
Вопрос решён.
Yandex
Объявления
15.06.2013, 14:21     Не срабатывает функция сортировки связного списка
Ответ Создать тему
Опции темы

Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru