| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- (*
- BSD 2-Clause License
- Copyright (c) 2018-2019, Anton Krotov
- All rights reserved.
- *)
- 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.
|