Go to Package Implementation

PACKAGE Singly_Linked_Lists IS
------------------------------------------------------------------
--| specification for simple linked lists with a single pointer
--| Author: Michael B. Feldman, The George Washington University 
--| Last Modified: September 1995                                     
------------------------------------------------------------------

  SUBTYPE WordType IS String(1..3);

  TYPE List IS PRIVATE;

  PROCEDURE AddToFront (L: IN OUT List; Word: IN WordType);
  -- Pre:  Word is defined; L may be empty
  -- Post: Word is inserted at the beginning of L
 
  PROCEDURE AddToEnd (L: IN OUT List; Word: IN WordType);
  -- Pre:  Word is defined; L may be empty
  -- Post: Word is appended to the end of L
 
  FUNCTION Copy(L: IN List) RETURN List;
  -- Pre:  L may be empty
  -- Post: returns a complete copy of the list L

  PROCEDURE Traverse(L: IN List);
  -- Pre:  L may be empty
  -- Post: displays the contents of L's Word fields, in the 
  --   order in which they appear in L

PRIVATE

  TYPE ListNode;
  TYPE List IS ACCESS ListNode;
  TYPE ListNode IS RECORD
    Word: WordType := "###";
    Next: List;
  END RECORD;

END Singly_Linked_Lists;