Source of List.java


  1: 
  2: package mylist; 
  3: 
  4: public interface List { 
  5: 
  6:   /**
  7:    * Returns the number of elements in the list.
  8:    *
  9:    * @pre  true
 10:    * @post @nochange 
 11:    */
 12:   public int size();
 13: 
 14:   /**
 15:    * Returns true if and only if the list is empty.
 16:    *
 17:    * @pre  true
 18:    * @post @result <=> size() > 0 
 19:    * @post @nochange 
 20:    */
 21:   public boolean isEmpty();
 22: 
 23:   /**
 24:    * Returns the i-th element in the list.
 25:    *
 26:    * @pre i >= 0 && i < size()
 27:    * @post @nochange 
 28:    */ 
 29:   public Object element(int i);
 30: 
 31:   /**
 32:    * Returns the first element in the list.
 33:    *
 34:    * @pre  !isEmpty()
 35:    * @post @result == element(0)
 36:    * @post @nochange 
 37:    */ 
 38:   public Object head();
 39: 
 40:   /**
 41:    * Returns the last element in the list.
 42:    *
 43:    * @pre  !isEmpty()
 44:    * @post @result == element(size() - 1)
 45:    * @post @nochange 
 46:    */ 
 47:   public Object last();
 48: 
 49:   /**
 50:    * Inserts a new element into the list at the i-th position.
 51:    *
 52:    * @pre  item != null && i >= 0 && i <= size()
 53:    * @post size() == size()@pre + 1
 54:    * @post @forall k : [0 .. size() - 1] @ 
 55:    *         (k < i ==> element(k)@pre == element(k)) &&    
 56:    *         (k == i ==> item@pre == element(k)) &&    
 57:    *         (k > i ==> element(k - 1)@pre == element(k)
 58:    */ 
 59:   public void insert(Object item, int i);
 60: 
 61:   /**
 62:    * Inserts a new element at the head of the list.
 63:    *
 64:    * @pre  item != null
 65:    * @post size() == size()@pre + 1
 66:    * @post item@pre == element(0)
 67:    * @post @forall k : [1 .. size() - 1] @ element(k - 1)@pre == element(k)
 68:    */ 
 69:   public void insertHead(Object item);
 70: 
 71:   /**
 72:    * Inserts a new element at the end of the list.
 73:    *
 74:    * @pre  item != null
 75:    * @post size() == size()@pre + 1
 76:    * @post item@pre == element(size() - 1)
 77:    * @post @forall k : [0 .. size() - 2] @ element(k)@pre == element(k)
 78:    */ 
 79:   public void insertLast(Object item);
 80: 
 81:   /**
 82:    * Remove the element at the i-th position. 
 83:    *
 84:    * @pre  size() > 0
 85:    * @pre  i >= 0 && i < size()
 86:    * @post @result = element(i)@pre
 87:    * @post size() == size()@pre - 1
 88:    * @post @forall k : [0 .. size() - 1] @
 89:    *         (k < i ==> element(k)@pre == element(k)) &&
 90:    *         (k >= i ==> element(k + 1)@pre == element(k))
 91:    */
 92:   public Object remove(int i);
 93: 
 94:   /**
 95:    * Remove the element at the head. 
 96:    *
 97:    * @pre  size() > 0
 98:    * @post @result = element(0)@pre
 99:    * @post @forall k : [1 .. size() - 1] @ element(k + 1)@pre == element(k)
100:    */
101:   public Object removeHead();
102: 
103:   /**
104:    * Remove the element at the end. 
105:    *
106:    * @pre  size() > 0
107:    * @post @result = element(size() - 1)@pre
108:    * @post @forall k : [0 .. size() - 1] @ element(k)@pre == element(k)
109:    */
110:   public Object removeLast();
111: 
112: }