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 }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
25 26 27 28  Наверх ↑