nil is a predefined constant
nil is a predefined pointer constant that indicates an unassigned pointer. “nil” stands for “not in list”. Every pointer type can be associated with this constant.
nil is defined in ISO 7185 Pascal and supported by all known Pascal variants.
program NilDemo; const NodeNum = 10; type PNode = ^TNode; TNode = record Key: Integer; Next: PNode end; var Root, Node: PNode; Foo: Integer; begin New (Root); Root^.Key := 1; { Set root key } Node := Root; for Foo := 2 to NodeNum do { Create linked list with NODE_NUM nodes } begin New (Node^.Next); Node := Node^.Next; Node^.Key := Foo { Set key } end; Node^.Next := nil; { Mark end of linked list } { Shorten list by removing its first element until list is empty } while Root <> nil do begin Node := Root; WriteLn ('Current key:', Root^.Key); Root := Root^.Next; Dispose (Node); Node := nil { Indicate old node is not assigned } end end.