| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- MODULE COLLECTIONS;
- TYPE
- ITEM* = POINTER TO RECORD
- link: ITEM
- END;
- COLLECTION* = POINTER TO RECORD
- last: ITEM
- END;
- PROCEDURE push* (collection: COLLECTION; item: ITEM);
- BEGIN
- item.link := collection.last;
- collection.last := item
- END push;
- PROCEDURE pop* (collection: COLLECTION): ITEM;
- VAR
- item: ITEM;
- BEGIN
- item := collection.last;
- IF item # NIL THEN
- collection.last := item.link
- END
- RETURN item
- END pop;
- PROCEDURE create* (): COLLECTION;
- VAR
- collection: COLLECTION;
- BEGIN
- NEW(collection);
- collection.last := NIL
- RETURN collection
- END create;
- END COLLECTIONS.
|