IPB
ЛогинПароль:

> Все о динамических структурах данных.
Altair
сообщение 4.10.2004 6:07
Сообщение #1


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Содержание:
Есть материал по теме? высылайте! ваша информация будет размещена здесь!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Altair
сообщение 30.05.2005 21:52
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Двусвязный список.
Двусвязный список, отличается от односвязного только тем, что каждый узел списка имеет указатель не только на следующий элемент, но и на предыдущий.

Некоторые учебники называют этот вид списка самым удобным, и широко используемым, но это не совсем так, ведь с каждым узлом уходит еще на 1 указатель памяти больше, чем у односвязного.

Тем не менее, использовать двусвязный список удобнее - потерять начало списка просто невозможно!

Все основные операции для двусвязных списков,похожи на операции с односвязными, но за счет добавления еще одного указателя, в код вносятся некоторые изменения. В присоединенном файле модуль DList для работы с двусвязными списками. А вот программа, тестирующая модуль и демонстрирующая его возможности.

(одно из возможных расширений модуля - добавление функции поиска элемента, функции удаления элемента, добавленияв начало, и процедуры переворота...).
uses crt, dlist;
var
l:tlist;
begin
writeln('Программа,тестирующая модуль DList для работы с двусвязными списками');
writeln('Добавляем первый элемент,список инициализируется автоматически...');
InitListAndAddFirst(1,L);
writeln('Теперь добавим элемент 2 после того,на который указывал L... (AddAfter)');
AddAfter(2,l);
writeln(' ... и перейдем к концу списка, чтобы добавлять после последнего...(GotoLast)');
GotoLast(l);
AddAfter(3,l); GotoLast(l); {... }
AddAfter(4,l); GotoLast(l); { ... }
AddAfter(5,l); GotoLast(l); { ...}
writeln('Полученный список (после добавления в конец) (listprint)');
ListPrint(L);
writeln('... вставим после 4 элемент 6');
writeln('Для этого идем в начало списка(GotoFirst) и ищем элемент 4 ... ');
gotoFirst(l); {в начало}
while (l^.data<>4)and (l^.next<>nil) do l:=l^.next; {ищем}
writeln;
writeln('Нашли, добавляем... ');
addafter(6,l);
writeln('...вот, что у нас получилось (ListPrint) :');
ListPrint(L);
writeln('Уничтожаем список, очищая память. (ListDestroy)');
ListDestroy(L);
end.

Модуль: Прикрепленный файл  DLIST.PAS ( 1.78 килобайт ) Кол-во скачиваний: 85255


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.06.2025 18:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"