COLLECTIONS.ob07 798 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. MODULE COLLECTIONS;
  2. TYPE
  3. ITEM* = POINTER TO RECORD
  4. link: ITEM
  5. END;
  6. COLLECTION* = POINTER TO RECORD
  7. last: ITEM
  8. END;
  9. PROCEDURE push* (collection: COLLECTION; item: ITEM);
  10. BEGIN
  11. item.link := collection.last;
  12. collection.last := item
  13. END push;
  14. PROCEDURE pop* (collection: COLLECTION): ITEM;
  15. VAR
  16. item: ITEM;
  17. BEGIN
  18. item := collection.last;
  19. IF item # NIL THEN
  20. collection.last := item.link
  21. END
  22. RETURN item
  23. END pop;
  24. PROCEDURE create* (): COLLECTION;
  25. VAR
  26. collection: COLLECTION;
  27. BEGIN
  28. NEW(collection);
  29. collection.last := NIL
  30. RETURN collection
  31. END create;
  32. END COLLECTIONS.