public class LinkedStack implements Stack {
private Node top; // reference to the head node
private int size; // number of elements in the stack
public LinkedStack() { // initializes an empty stack
top = null;
size = 0;
}
public int size() {
return size;
}
public boolean isEmpty() {
if (top == null)
return true;
return false;
}
public void push(Object elem) {
Node v = new Node(); // create a new node
v.setElement(elem);
v.setNext(top); // link-in the new node
top = v;
size++;
}
public Object top() throws StackEmptyException {
if (isEmpty())
throw new StackEmptyException("Stack is empty.");
return top.getElement();
}
public Object pop() throws StackEmptyException {
if (isEmpty())
throw new StackEmptyException("Stack is empty.");
Object temp = top.getElement();
top = top.getNext(); // link-out the former top node
size--;
return temp;
}
}