Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2008, 00:02   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 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;
Arkuz вне форума Ответить с цитированием
Старый 09.05.2008, 08:29   #2
alexBlack
Участник клуба
 
Регистрация: 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.

Так продолжаем пока не из чего будет выбирать.

Вам нужно сделать то-же самое для связанного списка. Проще всего это делается когда есть связи элементов в обе стороны. Главное не запутаться в указателях когда будете менять элементы местами.

Попробуйте. Если не получится, спрашивайте. Поможем.
alexBlack вне форума Ответить с цитированием
Старый 11.05.2008, 00:53   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

вот балин... ну буду пробовать, хотя у меня односвязный список
Arkuz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка линейного списка. ТИВ Паскаль, 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