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

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

var
head: PElem;
i: integer;

procedure list_insert(var a: PElem; data: integer);
var
new_elem: PElem;
begin
writeln('list insert a = ', cardinal(a), ', data = ', data);
new_elem := new(PElem);
new_elem^.data := data;
writeln('-> new for ', cardinal(new_elem));
if a = nil then begin
a := new_elem;
a^.next := nil;
exit;
end;

new_elem^.next := a^.next;
a^.next := new_elem;
end;

procedure list_print(a: PElem);
begin
write('list print for a = ', cardinal(a), ': ');
while a <> nil do begin
write(a^.data, ' ');
a := a^.next;
end;
writeln;
end;

procedure list_delete(var a: PElem);
var
t: PElem;
begin
if a^.next = nil then begin
dispose(a);
a := nil;
exit;
end;

t := a^.next;
a^.next := a^.next^.next;
writeln('-> dispose for ', cardinal(t));
dispose(t);
end;

procedure list_dispose(head: PElem);
var
t: PElem;
begin
while head <> nil do begin
t := head^.next;
writeln('-> dispose for ', cardinal(head));
dispose(head);
head := t;
end;
end;

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

list_dispose(head);
end.

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