Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка списка в динамической области

20K
21 февраля 2007 года
Nem
10 / / 21.02.2007
Суть в следующем: имеется односвязный список в динамической области. Необходимо отсортировать его по информационному полю. КАк возможно это выполнить на turbo pascal? Создавать второй список нельзя. Подскажите, пожалуйста, или дайте ссылки на подобные задачки. Спасибо.
7.6K
21 февраля 2007 года
Eternal Man
59 / / 07.07.2006
Отсортировать - это в смысле по возрастанию/убыванию?
20K
21 февраля 2007 года
Nem
10 / / 21.02.2007
Да. Нужно отсортировать список по возрастанию/убыванию элементы по информационному полю. Вот описание типа элементов:
 
Код:
type uk=^elem;
elem=record
inf:string; {информация конкретного элемента списка}
next:uk; {указатель на следующий элемент}
end;
var beg:uk; {это первый элемент списка}
/COLOR]
26K
21 февраля 2007 года
jammie
2 / / 21.02.2007
вообще-то, очень просто - также как одномерный массив: операции сравнения применяются к данным (в вашем случае inf), а для списка требуется функция смены узлов местами (необходимо подменить ссылки в поле uk).
622
27 февраля 2007 года
nilbog
507 / / 19.12.2006
Код:
procedure sort(var x:list);
var p,q,m:list; s:string;
begin
p:=list;
while p<>nil do
 begin
 q:=p;m:=q;
 while q<>nil do
  begin
  if m^.inf<q^.inf then m:=q;
  q:=q^.next
  end;
 s:=p^.inf; p^.inf:=m^.inf; m^.inf:=s;
 p:=p^.next
 end
end;

мне кажется этот метод лучше всего подойдет (проще всего) для сортировки однонаправленного списка
кажется сортировка простым выбором
а если при сортировке по алгоритму нужно двигаться в обе стороны то имхо поиск предыдущего элемента(многократный) убъет преимущества сортировки
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог