summaryrefslogtreecommitdiff
path: root/projects/project2_LInfiniteInteger/LStack.java
blob: 15e9bed7867a6a20e71c95403d14e32cb91d9982 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class LStack<T> implements StackInterface<T>
{
	private Node firstNode;
	
	public LStack()
	{
		firstNode = null;
	}
	
	public void push(T anEntry)
	{
		Node newNode = new Node(anEntry, firstNode);
		firstNode = newNode;
	}
	
	public T pop()
	{
		T result = null;
		
		if(firstNode != null)
		{
			result = firstNode.data;
			firstNode = firstNode.next;
		}
		
		return result;
	}
	
	public T peek()
	{
		if(firstNode != null)
		{
			return firstNode.data;
		}
		
		return null;
	}
	
	public boolean isEmpty()
	{
		return firstNode == null;
	}
	
	public void clear()
	{
		firstNode = null;
	}
	
	private class Node
	{
		private T data;
		private Node next;
		
		private Node(T aData)
		{
			this(aData, null);
		}
		
		private Node(T aData, Node nextNode)
		{
			data = aData;
			next = nextNode;
		}
	}
}