Lesson 9
Pointers and Linked List
Linked List Example
Program LinkedList;
Uses Crt;
TYPE
DataType = Char;
NodePtr = ^ NodeType;
NodeType = RECORD
Data : DataType;
Next : NodePtr;
END;
VAR
Head, Temp : NodePtr;
{ add at end of list }
PROCEDURE AddNode(VAR H : NodePtr; Item : DataType);
VAR
NewNode, Temp : NodePtr;
BEGIN
New(NewNode);
NewNode^.Data := Item;
NewNode^.Next := NIL;
If H = NIL THEN
H := NewNode
ELSE
begin
Temp := H;
WHILE (Temp^.Next <> NIL) DO { find last node }
Temp := Temp^.Next;
Temp^.Next := NewNode;
end;
END;
PROCEDURE ShowNode(H : NodePtr);
VAR
Temp : NodePtr;
BEGIN
Temp := H;
While Temp <> NIL DO
begin
write(Temp^.Data:4);
Temp := Temp^.Next;
end;
END;
PROCEDURE DestroyList(H : NodePtr);
BEGIN
IF H^.Next <> NIL THEN
DestroyList(H^.Next);
Dispose(H);
END;
BEGIN { main }
Clrscr;
Head:=NIL; { list is empty at the beginning }
AddNode(Head,'A');
AddNode(Head,'B');
AddNode(Head,'C');
AddNode(Head,'D');
AddNode(Head,'E');
AddNode(Head,'F');
ShowNode(Head); { display all nodes }
DestroyList(Head); { done with list so free up memory }
ReadKey;
END.