list.h 1023 B

12345678910111213141516171819202122232425
  1. #ifndef LIST_H_
  2. #define LIST_H_
  3. /**
  4. * A List is an abstract (a.k.a. pure virtual) class specifying
  5. * the interface for a list of an arbitrary data type.
  6. */
  7. template <typename T>
  8. class List {
  9. public:
  10. virtual ~List() { /* do nothing */ };
  11. virtual int getSize() = 0; // Get number of items in list.
  12. virtual bool isEmpty() = 0; // True iff list contains no items.
  13. virtual T peekHead() = 0; // Returns item at front of list.
  14. virtual T peekTail() = 0; // Returns item at back of list.
  15. virtual T get(int i) = 0; // Returns item in ith position.
  16. virtual void insertAtHead(T value) = 0; // Prepends item to front of list.
  17. virtual void insertAtTail(T value) = 0; // Appends item to back of list.
  18. virtual T removeHead() = 0; // Removes and returns front item.
  19. virtual T removeTail() = 0; // Removes and returns back item.
  20. };
  21. #endif // LIST_H_