type PElem = ^Elem; Elem = record Prev,Next: PElem; Data: integer; end; var L, P0, N: PElem; function AddBefore(D:integer;var P0:PElem):PElem; var R:PElem; begin New(R); R^.Data:=D; R^.Next:=P0; R^.Prev:=P0^.Prev; P0^.Prev:=R; if not (R^.Prev=nil) then R^.Prev^.Next:=R; AddBefore:=R; end; begin randomize; New(L); L^.Data:=10+random(100); L^.Prev:=nil; L^.Next:=nil; New(L^.Next); P0:=L^.Next; P0^.Data:=10+random(100); P0^.Prev:=L; P0^.Next:=nil; Writeln; Writeln('L : ', L^.Data); Writeln('L^.Next = P0 : ', L^.Next^.Data); Writeln('P0 : ', P0^.Data); Writeln('Add'); N:=AddBefore(random(10), P0); Writeln('L : ', L^.Data); Writeln('L^.Next = N : ', L^.Next^.Data); Writeln('L^.Next^.Next = P0 : ', L^.Next^.Next^.Data); Writeln('P0 : ', P0^.Data); Writeln('N : ', N^.Data); end. |