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

Сортировка списка по алфавиту - C++

Восстановить пароль Регистрация
 
UltimateDoker
1 / 1 / 1
Регистрация: 17.03.2015
Сообщений: 112
22.11.2015, 15:03     Сортировка списка по алфавиту #1
Есть двусвязный список:
C++
1
2
3
4
5
6
7
8
9
10
struct Stud {
    char fam[40];
    int ball[3];
    double sred = 0;
};
struct List {
    Stud man;
    List *next, *prev; // ссылки на соседние узлы
};
typedef List *PList; // тип данных «указатель на узел»
Мне необходимо отсортировать его по-алфавиту. Написал:
C++
1
2
3
4
5
6
7
8
9
10
11
void sort(PList &Head, int n) {
    int i, j;
    for (i = 0; i < n - 1; i++){
        for (j = i + 1; j < n; j++)
            if (strcmp(Head->man.fam, Head->next->man.fam)>0)
            {
                swap(Head);
            }
    Head = Head->next;
}
}
Я понимаю что косяк в неправильном построении циклов, но как сделать правильно, при условии что у меня список, а не массив, не понимаю. Прошу помочь

Добавлено через 25 минут
Починил)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void sort(PList &Head, int n) {
    PList temp = new List;
    PList tek = new List;
    int i, j;
    for (i = 0; i < n - 1; i++){
        tek = Head;
        for (j = i + 1; j < n; j++) {
            temp = tek->next;
            if (strcmp(tek->man.fam, temp->man.fam) > 0)
            {
                swap(tek);
            }
            temp = tek;
            tek = temp->next;
        }
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2015, 15:03     Сортировка списка по алфавиту
Посмотрите здесь:

C++ Из списка фамилий упорядочить их по алфавиту
Сортировка по алфавиту C++
C++ Сортировка по алфавиту
сортировка по алфавиту C++
Сортировка по алфавиту C++
C++ Сортировка по алфавиту
Сортировка по алфавиту C++
Сортировка по алфавиту C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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