type Node = auto class data: T; next: Node; end; type SinglyLinkedList = class first: Node; procedure AddFirst(x: T); begin first := new Node(x,first); end; procedure AddAfter(p: Node; x: T); begin p.next := new Node(x,p.next); end; procedure PrintList(); begin var p := first; while p<>nil do begin Print(p.data); p := p.next; end; end; end; begin var lst := new SinglyLinkedList; lst.AddFirst(2); lst.AddFirst(3); lst.AddAfter(lst.first,555); lst.PrintList; end.