25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
||||||
1 | ||||||
Сортировка однонаправленного списка12.12.2013, 14:13. Показов 4779. Ответов 26
Метки нет (Все метки)
Доброго времени суток, уважаемые форумчане!
Возникла проблема с сортировкой однонаправленного списка методом "пузырька". Что делать-не знаю. Весь остальной код вроде бы работает, не работает только процедура сортировки. Прилагаю код.
Актуально. Добавлено через 22 минуты Актуально. Добавлено через 36 минут Актуально. Добавлено через 20 часов 13 минут Актуально. Добавлено через 14 часов 23 минуты Актуально. Добавлено через 2 часа 15 минут Актуально. Добавлено через 1 час 20 минут Актуально.
0
|
12.12.2013, 14:13 | |
Ответы с готовыми решениями:
26
Сортировка однонаправленного списка Сортировка однонаправленного линейного списка Структуры данных: сортировка однонаправленного списка Сортировка однонаправленного списка (метод пузырька) |
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
12.12.2013, 14:18 | 2 |
0
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
|
12.12.2013, 14:24 [ТС] | 3 |
Проблема не в реализации сортировки, а в том, как под эту реализацию подогнать список.
0
|
2 / 9 / 7
Регистрация: 12.10.2013
Сообщений: 43
|
|
12.12.2013, 14:48 | 4 |
Что конкретно должно сортироваться? Условие задачи?
0
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
|
12.12.2013, 18:59 [ТС] | 5 |
Сортироваться должен список по полю code.
Добавлено через 1 час 46 минут Актуально. Добавлено через 20 минут Актуально.. Добавлено через 28 минут Ошибка возникает именно при сортировке, все остальное работает нормально.
0
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
12.12.2013, 19:20 | 6 |
План действий:
а) изменить (минимально) функцию сортировки так, чтобы она работала на массиве; б) проверить её работу на массиве; в) в случае неправильной работе на массиве внести необходимые коррективы; г) переписать функцию обратно под работу со списком.
0
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
||||||||||||||||
12.12.2013, 20:09 [ТС] | 7 | |||||||||||||||
Проблема не в алгоритме. Проблема в адресации. Ошибка вылетает связанная с адресацией.
Добавлено через 24 минуты Вообще, что может быть сложного в сортировке массива пузырьком(если речь об этом)? Тут проблема конкретно с динамикой. Добавлено через 3 минуты Так кое-что поменялось. Обновленный код выглядит вот так:
UPD Новый вариант процедуры сортировки:
Ошибка вылетает на 10 строке.
0
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 4
|
|
12.12.2013, 20:13 | 8 |
0
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
|
12.12.2013, 20:15 [ТС] | 9 |
0
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 4
|
|
12.12.2013, 20:17 | 10 |
Тогда просто убрать обращение к полю Next;
0
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
|
12.12.2013, 20:19 [ТС] | 11 |
А как, если при сортировке я не хочу перемешать данные, я хочу перемещать элементы списка.
0
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 4
|
||||||
12.12.2013, 20:28 | 12 | |||||
в вашем коде
заменить на
0
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
|||||||||||
12.12.2013, 20:50 [ТС] | 13 | ||||||||||
Уходит в бесконечный цикл.
9 строку убрал, ибо лишняя. Добавлено через 13 минут На данный момент код функции сортировки представляет из себя:
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|
12.12.2013, 20:51 | 14 |
Talkoflights, полностью задание можно узнать ?
Зачем то две структуры...
0
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
||||||
12.12.2013, 21:09 [ТС] | 15 | |||||
В данном случае нужно отсортировать список по полю code.
Добавлено через 3 минуты Если конкретнее, то я хочу сортировать элементы списка, а не перебрасывать их значения друг-другу. Добавлено через 19 секунд Использую адреса, естественно. Добавлено через 6 минут Вот самый последний вариант кода:
Огромная просьба оказать помощь, 3-ий день бьюсь и без толку.
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
12.12.2013, 21:14 | 16 | |||||
Talkoflights,
вот что получилось , сортирует без проблем, выдерните себе сортировку
1
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
|
12.12.2013, 22:08 [ТС] | 17 |
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
13.12.2013, 11:55 | 18 | |||||
Talkoflights, не особо проверял
1
|
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
|
|
13.12.2013, 20:53 [ТС] | 19 |
Спасибо за код.
Хотелось бы выяснить общий механизм. Допустим, у нас есть список из 3 элементов: 1->2->3->NULL; 1-ый элемент больше второго и меньше третьего. Как нам перебросить указатели так, чтобы список был отсортирован? То есть указатель на следующий элемент у 1-го должен указывать на 3-ий, а у второго элемента указатель на следующий элемент должен быть направлен на 1-ый.
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
13.12.2013, 22:08 | 20 | |||||
Все тоже самое, что было
// меняем местами первый со вторым Item tmp = *node1; *node1 = *node2; *node2 = tmp; Item *ptrtmp = node1->Next; node1->Next = node2->Next; node2->Next = ptrtmp; Проверка
1
|
13.12.2013, 22:08 | |
13.12.2013, 22:08 | |
Помогаю со студенческими работами здесь
20
Создание однонаправленного списка Реализация однонаправленного списка Создание однонаправленного списка Формировка однонаправленного Списка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |