type Node = auto class data: T; prev,next: Node; end; type MyLinkedList = class first, last: Node; procedure AddLast(x: T); begin if first = nil then begin first := new Node(x,nil,nil); last := first end else begin var p := new Node(x,last,nil); last.next := p; last := p; end; end; procedure AddAfter(p: Node; x: T); begin if last = p then AddLast(x) else begin var pp := new Node(x,p,p.next); p.next := pp; pp.prev.next := pp; end end; end;