Двухсвязные списки
Структура данных
Создание двухсвязного списка
Удаление элемента
Вставка элемента в список перед найденным
Интересная задача
6.78M
Category: programmingprogramming

Двухсвязные списки

1. Двухсвязные списки

2. Структура данных

type Tinf=integer;
Tptr = ^Tlist;
Tlist = record
inf: Tinf;
pred, next:Tptr;
end;
2

3. Создание двухсвязного списка

var head, p, q:Tptr; f:textfile;
begin

reset(f);
head:=nil;
if not eof(f) then
begin
new(head);
read(f,head^.inf);
head^.pred:=nil;
head^.next:=nil;
q:=head;
end;
while not eof(f) do
begin
new(p);
read(f, p^.inf);
p^.pred:=q;
q^.next:=p;
q:=p;
end;
p^.next:=nil;

end.
3

4. Удаление элемента

1.
head:=head^.next;
head^.pred:=nil;
2.
p^.pred^.next:=p^.next;
p^.next^.pred:=p^.pred;
dispose(p);
4

5. Вставка элемента в список перед найденным

if p=head
then
begin
p1^.pred:=nil;
p1^.next:=head;
head:=p1;
end
else
begin
p1^.pred:=p^.pred;
p1^.next:=p;
p^.pred^.next:=p1;
p^.pred:=p1;
end;
5

6. Интересная задача

Внутреннее представление выражения (a+b) в языке Рефал
6
English     Русский Rules