Link stack
public class LinkStack { private LinkList list; public LinkStack() { list = new LinkList(); } public void push(long j) { list.insertFirst(j); } public long pop() { return list.deleteFirst(); } public boolean isEmpty() { return (list.isEmpty()); } public void displayStack() { System.out.print("Stack: "); list.displayList(); } public static void main(String[] args) { LinkStack theStack = new LinkStack(); theStack.push(20); theStack.push(40); theStack.displayStack(); theStack.push(60); theStack.push(80); theStack.displayStack(); theStack.pop(); theStack.pop(); theStack.displayStack(); } class LinkList { private Link first; public LinkList() { first = null; } public boolean isEmpty() { return (first == null); } public void insertFirst(long d) { Link newLink = new Link(d); newLink.next = first; first = newLink; } public long deleteFirst() { Link buf = first; first = first.next; return buf.data; } public void displayList() { Link current = first; while (current != null) { current.displayLink(); current = current.next; } System.out.println(""); } class Link { public long data; // data item public Link next; // next link in list public Link(long d) { data = d; } public void displayLink() { System.out.print(data + " "); } } } }