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());
}
}