LinkedStack.java
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 |
public class LinkedStack<T> { private class Node<T> { T data; Node<T> next; public Node(T data){ this.data = data; } public Node(T data, Node<T> next){ this(data); this.next = next; } public String toString(){ return "" + data; } } private Node<T> top; private int count; public LinkedStack(){ count = 0; } public void push (T i){ top = new Node<T>(i, top); count++; } public T peek(){ return top.data; } public T pop(){ T r = top.data; top = top.next; count--; return r; } public int size(){ return count; } public boolean isEmpty(){ return top == null; } public String toString() { String retVal = "Linked stack with " + count + " elements\nNodes:"; for (Node<T> temp = top; temp != null; temp = temp.next) retVal += temp + " "; return retVal; } } |
LinkedQueue.java
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 |
public class LinkedQueue<T> { private class Node<T> { T data; Node<T> next; public Node(T data){ this.data = data; } public Node(T data, Node<T> next){ this(data); this.next = next; } public String toString(){ return "" + data; } } private Node<T> head, tail; private int count; public LinkedQueue(){ count = 0; } public void enqueue(T i){ if (count == 0){ head = tail = new Node<T>(i); } else { tail = tail.next = new Node<T>(i); } count++; } public T dequeue(){ T r = head.data; head = head.next; count--; if (isEmpty()) tail = null; return r; } public int size(){ return count; } public boolean isEmpty(){ return head == null; } public String toString() { String retVal = "Linked queue with " + count + " elements\nNodes:"; for (Node<T> temp = head; temp != null; temp = temp.next) retVal += temp + " "; return retVal; } } |