void insert(Object o) int find(Object o) Object elementAt(int index) int length() void remove(Object o) void expunge() boolean isEmpty() boolean isFull() String toString()
int compare = s1.compareTo(s2); if (compare < 0) // s1 < s2
void insert(Object o) // typically adds to the end int find(Object o) // typically requires sequential (linear) search void remove(Object o) // must maintain order Object elementAt(int index) int length() void expunge() boolean isEmpty() boolean isFull() String toString()
void insert(Object o) // adds to the end int find(Object o) // uses sequential (linear) search void remove(Object o) // must maintain order, involves "crunch up" Object elementAt(int index) // uses array indexing int length() void expunge() boolean isEmpty() boolean isFull() String toString()
void insert(Object o) // typically adds to the end, use tail pointer int find(Object o) // must use sequential (linear) search void remove(Object o) // recursion or previous-node pointer Object elementAt(int index) // must count nodes int length() // must count nodes or keep integer count void expunge() boolean isEmpty() boolean isFull() String toString()
void insert(Object o) int find(Object o) Object elementAt(int index) int length() void remove(Object o) void expunge() boolean isEmpty() boolean isFull() String toString()
void insert(Object o) // must find position, shift-down, then insert int find(Object o) // may use Binary Search in an array Object elementAt(int index) // uses array indexing int length() void remove(Object o) // must find element, then shift-up void expunge() boolean isEmpty() boolean isFull() String toString()
void insert(Object o) // must find position, then insert node int find(Object o) // must use linear search, but may stop early Object elementAt(int index) // must count int length() // must count void remove(Object o) // must maintain order, previous-pointer void expunge() boolean isEmpty() boolean isFull() String toString()