1 import java.util.NoSuchElementException;
2
3 /**
4 An implementation of a stack as a sequence of nodes.
5 */
6 public class LinkedListStack
7 {
8 private Node first;
9
10 /**
11 Constructs an empty stack.
12 */
13 public LinkedListStack()
14 {
15 first = null;
16 }
17
18 /**
19 Adds an element to the top of the stack.
20 @param element the element to add
21 */
22 public void push(Object element)
23 {
24 Node newNode = new Node();
25 newNode.data = element;
26 newNode.next = first;
27 first = newNode;
28 }
29
30 /**
31 Removes the element from the top of the stack.
32 @return the removed element
33 */
34 public Object pop()
35 {
36 if (first == null) { throw new NoSuchElementException(); }
37 Object element = first.data;
38 first = first.next;
39 return element;
40 }
41
42 /**
43 Checks whether this stack is empty.
44 @return true if the stack is empty
45 */
46 public boolean empty()
47 {
48 return first == null;
49 }
50
51 class Node
52 {
53 public Object data;
54 public Node next;
55 }
56 }