Динамические структуры данных. Задание практикума. Язык Паскаль. Вылиток А.А - 18 стр.

UptoLike

- 18 -
значение i+1, выражение (k>i) and (i>0) истинно, и функция возвращает
значение «истина». Наконец, если i>=1 и в списке нет i-го элемента, то
выход из цикла произойдёт из-за ложности выражения p < > nil (по
достижении конца списка). При этом выражение k<=i останется истинным.
Следовательно, k>i ложно и (k>i) and (i>0)ложно. Значением функции
будет «ложь».
function ref(L: list; x: elemtype):link;
{ возвращает ссылку на звено, содержащее элемент x,если
x входит в список L, иначеnil }
var p: link; found: boolean;
begin
found:=false; p:=L;
while not found and (p< > nil) do
if x = p.elem then found:=true
else p:=p.next;
ref:=p ;
end; {ref}
procedure insert(var L: list; x,y: elemtype);
{ вставляет в список L элемент y после элемента x, если
x входит в список }
var p,q: link;
begin
p:=ref(L,x);
if p < > nil then
begin q:= p.next;
new(p.next)
p.next.elem:= y;
p.next.next:= q
end
end; {insert}
procedure delete(var L: list; x elemtype);
{ удаляет из списка L элемент, следующий за x, если
x входит в список и x – не последний элемент в списке}
var p,q: link;
begin
p:=ref(L,x);
if p< >nil then
begin q:=p.next;
if q<>nil then
begin p.next:= q.next; dispose(q)
end
end
end; {delete}
значение i+1, выражение (k>i) and (i>0) истинно, и функция возвращает
значение «истина». Наконец, если i>=1 и в списке нет i-го элемента, то
выход из цикла произойдёт из-за ложности выражения p < > nil (по
достижении конца списка). При этом выражение k<=i останется истинным.
Следовательно, k>i ложно и (k>i) and (i>0)ложно. Значением функции
будет «ложь».

function ref(L: list; x: elemtype):link;
 { возвращает ссылку на звено, содержащее элемент x,если
   x входит в список L, иначе – nil }
var p: link; found: boolean;
  begin
    found:=false; p:=L;
    while not found and (p< > nil) do
      if x = p↑.elem then found:=true
                     else p:=p↑.next;
      ref:=p ;
  end; {ref}

procedure insert(var L: list; x,y: elemtype);
 { вставляет в список L элемент y после элемента x, если
   x входит в список }
 var p,q: link;
  begin
    p:=ref(L,x);
    if p < > nil then
      begin q:= p↑.next;
              new(p↑.next)
              p↑.next↑.elem:= y;
              p↑.next↑.next:= q
      end
  end; {insert}

procedure delete(var L: list; x elemtype);
 { удаляет из списка L элемент, следующий за x, если
   x входит в список и x – не последний элемент в списке}
 var p,q: link;
  begin
    p:=ref(L,x);
    if p< >nil then
      begin q:=p↑.next;
             if q<>nil then
                begin p↑.next:= q↑.next; dispose(q)
                end
      end
  end; {delete}



                                - 18 -