2. Для виводу елементів списку на екран використовується процедура write_inf(x: inf) , яку необхідно описати відповідно до типу даних inf.
Створення списку.
procedure create(var s: circle_list;); { створення списку }
var
p,q: circle_list;
x:inf;
begin
assign(f,'data.dat');
reset(f); { відкриваємо файл даних}
new(s); { створюємо список,}
p:=s;
p^.next:=p; { наступним для заголовного є цей же елемент}
p^.pred:=p; { як і попередній }
while not eof(f) do
begin
new(q); { створюємо наступний елемент списку }
read(f,x); { читаємо дані з файлу }
q^.elem:=x; { записуємо дані в елемент}
q^.next:=p^.next; { переводимо покажчики }
q^.pred:=p;
p^.next:=q;
p:=q;
end;
close(f)
end; { create }
Друк списку.
procedure print(s: circle_list);{ вивід списку на екран}
var
p: circle_list ;
begin
p:=s;
p:=p^.next; { пропускаємо заголовний елемент }
while p<>s do
begin
write_inf(x);
p:=p^.next;
end;
end; { print }
Пошук елемента списку з заданими властивостями.
procedure search(x:inf ; var p: circle_list);
{ пошук елемента x у списку на нього буде вказувати змінна p }
begin
p:=p^.next; { переходимо до наступного елемента }
while (p<>s) and (p^.elem<>x) do
p:=p^.next;
end; { search }
Вставка елементу в список.
procedure insert(x:inf ; var p: circle_list);
{ вставка елемента х у список }
var q: circle_list ;
{
p - указує на елемент, після якого вставляємо
q - для створення нового елемента
}
begin
new(q);
q^.elem:=x;
q^.pred:=p;
q^.next:=p^.next;
p^.next:=q;
end; { insert }
Видалення елементу зі списку
procedure delete(var p: circle_list);
{ видалення елемента списку }
{
видалення здійснюється для елемента , на який вказує р;
посилання на елемент, що видаляється, знаходиться процедурою search
}
begin
if p<> s then
begin
p^.next^.pred:=p^.pred;
p^.pred^.next:=p^.next;
dispose(p);
end
end; { delete }
25 26 27 28 Наверх ↑