|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.05.2008, 00:02 | #1 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
Сортировка списка...
Где то в темах нашёл код сортировки списка односвязного. Но там после сортировки полученный список помещается в другой список. А мне препод сказал, что мне нужно, чтобы у меня непосредственно в самом базовом списке происходила сортировка. Просто у меня тема "Мультисписки". А если просортировать и после записи элементов в новый список опять их присвоить в начальный, а промежуточный снести? Так вроде получается что сортировка проходит в базовом списке.
Нужно мнение опытных трудоголиков - программеров. Есть тут кто прикалывается над работой с указателями, даи вообще с динамической памятью. Вот кусок кода сортировки односвязного списка(нашёл на форуме): procedure sortList(head:PList); var p1, p2, pm, lpm, lp, p : PList; begin p1 := head.next; p2 := head; while p1 <> nil do begin // Поиск минимального элемента pm := p1; lpm := nil; p := p1; lp := nil; while p <> nil do begin if p.a <= pm.a then begin pm := p; lpm := lp; // Запоминаем предыдущий end; lp := p; p := p.next; end; // Минимальный элемент убираем из списка if lpm = nil then p1 := pm.next else lpm.next := pm.next; // и помещаем в новый список p2.next := pm; p2 := p2.next; p2.next := nil; end; end; |
09.05.2008, 08:29 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Посмотрите на сортировку массива:
a1,a2,a3,a4,a5 p Указатель p на первом элементе a1. Из элементов a2...an находим минимальный. Меняем его с a1 и указатель перемещаем на a2: a5,a2,a3,a4,a1 ___p теперь минимальный ищем от a3 до an. Так продолжаем пока не из чего будет выбирать. Вам нужно сделать то-же самое для связанного списка. Проще всего это делается когда есть связи элементов в обе стороны. Главное не запутаться в указателях когда будете менять элементы местами. Попробуйте. Если не получится, спрашивайте. Поможем. |
11.05.2008, 00:53 | #3 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
вот балин... ну буду пробовать, хотя у меня односвязный список
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка линейного списка. | ТИВ | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 23.11.2008 22:39 |
Сортировка списка... | Arkuz | Компоненты Delphi | 4 | 03.05.2008 23:21 |
Сортировка списка | Александр из Перми | Microsoft Office Excel | 3 | 27.01.2007 22:46 |