class LinkedNode { private Object o; private LinkedNode next; public LinkedNode(LinkedNode nxt, Object e) { next = nxt; o = e; } public LinkedNode(Object e) { this(null, e); } public Object getElement() { return o; } public LinkedNode getNext() { return next; } public void setElement(Object e) { o = e; } public void setNext(LinkedNode node) { next = node; } } public class LinkedStack implements Stack { int size; LinkedNode head; public LinkedStack() { size=0; head = null; } public int size() { return size; } public void push(Object o) { // the following is OK even if head == null. head = new LinkedNode(head, o); size++; } public Object pop() { LinkedNode pN = head; head = head.getNext(); size--; return pN.getElement(); } public Object top() { return head; } public String toString() { String str = "@@@@@@@@ - Stack - @@@@@@@@\n"; LinkedNode curr = head; while(curr != null) str += curr.getElement().toString(); return str + "@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"; } }