| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- IMPLEMENTATION MODULE SingleLinkedList;
- FROM SYSTEM IMPORT ADDRESS;
- FROM Storage IMPORT ALLOCATE, DEALLOCATE;
- TYPE
- ElementPtr = POINTER TO Element;
- Element = RECORD
- pos : CARDINAL;
- next : ElementPtr;
- item : ADDRESS;
- END;
- List = POINTER TO ListRec;
- ListRec = RECORD
- firstElement : ElementPtr;
- lastElement : ElementPtr;
- homogene : BOOLEAN; (* allows or not homogene items *)
- CheckType : PROC; (* procedure to check if the elements are of the same type *)
- END;
-
- (*
- PROCEDURE SearchItem ( item : ; compare : PROC ) : BOOLEAN;
- BEGIN
- ;
- END Seach;
- PROCEDURE Traverse (l : List; toDo : PROC);
- BEGIN
- ;
- END Traverse;
- *)
- PROCEDURE Empty (l : List): BOOLEAN ;
- BEGIN
- IF l^.firstElement = NIL THEN
- RETURN TRUE
- ELSE
- RETURN FALSE
- END
- END Empty;
- (*
- PROCEDURE RemoveItem (): BOOLEAN;
- BEGIN
- ;
- END Remove;
- PROCEDURE AddItem (): BOOLEAN;
- BEGIN
- ;
- END Add;
- *)
- PROCEDURE DeleteAllItems (l : List);
- BEGIN
- END DeleteAllItems;
- PROCEDURE Free ( VAR l : List);
- BEGIN
- DeleteAllItems(l);
- l^.firstElement := NIL;
- l^.homogene := TRUE ;
- l^.CheckType := NIL;
- DISPOSE (l);
- END Free;
- PROCEDURE Init ( VAR l : List; mode : BOOLEAN ; p : PROC );
- BEGIN
- NEW (l);
- l^.firstElement := NIL;
- l^.homogene := mode;
- l^.CheckType := p;
- END Init;
- BEGIN
- (* Initialization of the SingleLinkedList structure *)
-
- END SingleLinkedList.
|