{ The following Program yields output that indicates that I have it set up correctly but With my scanty understanding of exactly how to handle a linked list I would be surprised if it is. This is one difficult area in which Swan is not quite as expansive as he might be. I will appreciate critique and commentary on this if you are anybody would be so kind as to give it: } Program InsertLink; Uses Crt; Type Str15 = String[15]; Aptr = ^Link; Link = Record Data : Str15; Node : Aptr; end; Var FirstItem, NewItem, OldItem : Aptr; Procedure CreateList; begin Writeln('Linked list BEForE insertion of node.'); Writeln; New(FirstItem); FirstItem^.Data := 'inSERT '; Write(FirstItem^.Data); Write(' '); New(FirstItem^.Node); FirstItem^.Node^.Data := 'HERE'; Writeln(FirstItem^.Node^.Data); FirstItem^.Node^.Node := NIL; end; Procedure InsertALink; begin Writeln; Writeln; Writeln('Linked list AFTER insertion of node.'); Writeln; Write(FirstItem^.Data); New(NewItem); NewItem^.Node := OldItem^.Node; OldItem^.Node := NewItem; FirstItem^.Node^.Data := 'inSERTEDLinK'; Write(FirstItem^.Node^.Data); New(FirstItem^.Node^.Node); FirstItem^.Node^.Node^.Data := ' HERE'; Writeln(FirstItem^.Node^.Node^.Data); FirstItem^.Node^.Node^.Node := NIL; end; Procedure DisposeList; begin Dispose(FirstItem^.Node^.Node); FirstItem^.Node := NIL; end; begin ClrScr; CreateList; Writeln; InsertALink; DisposeList; end.