Создать процедуры для добавления элемента в заданную позицию списка (add), удаления элемента из списка по его номеру (delitem), вывода содержимого списка на экран (writestack).
head – указатель на начало списка;
p – указатель на обрабатываемую область памяти;
pl -
type pitem = ^item; item = record data: integer; next: pitem; end; var head, p, p1: pitem; n, k, l: integer; procedure add(x,i:integer); var j: integer; begin if (i > 0) and (i = n+1) then begin new(p); p^.data := x; if i = 1 then begin p^.next := head; head := p end else begin p1 := head; for j := 2 to i-1 do p1 := p1^.next; p^.next := p1^.next; p1^.next := p; end; n := n + 1; end; end; procedure delitem(i:integer); var k: integer; begin if (i>=1) and (i=n) and (headnil) then if i = 1 then begin p := head^.next; dispose(head); head := p; end else begin p := head; for k := 2 to i-1 do p := p^.next; p1 := p^.next; p^.next := p1^.next; dispose(p1); end; end; procedure writelist; begin p1 := head; writeln('Содержимое списка. '); while p1 nil do begin write(p1^.data,' '); p1 := p1^.next; end; writeln; end; begin n := 0; head := nil; for k := 1 to 10 do add(k,k); writelist; write('Введите значение добавляемого элемента: '); readln(k); write('Введите позицию добавляемого элемента: '); readln(l); add(k,l); writelist; write('Введите номер удаляемого элемента: '); readln(k); delitem(k); writelist; readln end.
Комментарии
procedure add
Объясните, пожалуйста, подробно, что происходит в procedure add?