public ArrayStack() { items = (E[])(new Object[INITSIZE]); numItems = 0; }
It might seem like items should be initialized as follows:
items = new E[INITSIZE];
However, Java does not allow you create a new array using generic type so what we'll do is create an array of Objects and cast it to an array of items of type E
public E pop() throws EmptyStackException { if (numItems == 0) { throw new EmptyStackException(); } else { numItems--; return items[numItems]; } }
Operation | Worst-case Time | Average-case Time |
---|---|---|
constructor |
O(1) |
O(1) |
isEmpty |
O(1) |
O(1) |
push |
O(N) |
O(1) |
pop |
O(1) |
O(1) |
peek |
O(1) |
O(1) |
public void push(E ob) { items = new Listnode<E>(ob, items); numItems++; }
Operation | Worst-case Time |
---|---|
constructor |
O(1) |
isEmpty |
O(1) |
push |
O(1) |
pop |
O(1) |
peek |
O(1) |
public static void reverseQ(QueueADT<E> q) { // precondition: q contains x1 x2 ... xN (with x1 at the front) // postcondition: q contains xN ... x2 X1 (with xN at the front) StackADT<E> s = new ArrayStack<E>(); while (!q.empty()) { s.push(q.dequeue()); } while (!s.empty()) { q.enqueue(s.pop()); } }