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

Слайд 2

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

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

Структура данных type Tinf=integer; Tptr = ^Tlist; Tlist = record inf: Tinf; pred, next:Tptr; end;

Слайд 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);

Создание двухсвязного списка var head, p, q:Tptr; f:textfile; begin … reset(f); head:=nil;
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.

Слайд 4

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

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

Удаление элемента head:=head^.next; head^.pred:=nil; p^.pred^.next:=p^.next; p^.next^.pred:=p^.pred; dispose(p);

Слайд 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;

Вставка элемента в список перед найденным if p=head then begin p1^.pred:=nil; p1^.next:=head;
p^.pred:=p1;
end;