Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
25.04.2015
Размер:
1.57 Кб
Скачать
{$mode objfpc}

type
PElem = ^TElem;
TElem = record
data: integer;
next, prev: PElem;
end;

var
head: PElem;
i: integer;

procedure list_insert(var a: PElem; data: integer);
var
new_elem: PElem;
begin
new(new_elem);
new_elem^.data := data;
if a = nil then begin
a := new_elem;
a^.next := nil;
a^.prev := nil;
end else begin
new_elem^.next := a^.next;
new_elem^.prev := a;
if a^.next <> nil then
a^.next^.prev := new_elem;
a^.next := new_elem;
end;
end;

procedure list_delete_after(a: PElem);
var
lost_elem: PElem;
begin
lost_elem := a^.next;
a^.next := lost_elem^.next;
if lost_elem^.next <> nil then
lost_elem^.next^.prev := a;
dispose(lost_elem);
end;

procedure list_delete_head(var head: PElem);
var
lost_elem: PElem;
begin
lost_elem := head;
head := head^.next;
if head <> nil then
head^.prev := nil;
dispose(lost_elem);
end;

procedure list_print(head: PElem);
var
pre: PElem;
begin
while head <> nil do begin
write(head^.data, ' ');
pre := head;
head := head^.next;
end;
writeln;

head := pre;

while head <> nil do begin
write(head^.data, ' ');
head := head^.prev;
end;
writeln;
end;

begin
head := nil;
for i := 1 to 5 do
list_insert(head, i);
list_delete_after(head^.next^.next);
list_delete_head(head);

list_print(head);
end.































Соседние файлы в папке 15_lists