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.