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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
public class LinkedListQueue<T> {
private ListNode<T> head, tail;
private int size = 0;
public boolean isEmpty() { return size == 0; }
public int size() { return size; }
public void push(T e) { ListNode<T> node = new ListNode<>(e); if (null == head) { head = node; } else if (null == tail) { tail = node; head.next = tail; } else { tail.next = node; } size++; }
public T pop() { T result = peek(); head = head.next(); size--; return result; }
public T peek() { if (isEmpty()) { throw new IndexOutOfBoundsException(); } return head.value; }
private static class ListNode<T> { private T value;
private ListNode<T> next;
public ListNode(T value) { this.value = value; }
public ListNode(T value, ListNode<T> next) { this.value = value; this.next = next; }
public ListNode<T> next() { return this.next; }
public T value() { return this.value; } }
public static void main(String[] args) { LinkedListQueue<Integer> queue = new LinkedListQueue<>(); System.err.println("当前栈是否为空:" + queue.isEmpty()); System.err.println("当前栈元素个数:" + queue.size()); queue.push(1); queue.push(2); queue.push(3); System.err.println("当前栈是否为空:" + queue.isEmpty()); System.err.println("当前栈元素个数:" + queue.size()); System.err.println("peek第一个元素,元素值为:" + queue.peek() + ",peek后元素个数为:" + queue.size()); System.err.println("pop第一个元素,元素值为:" + queue.pop() + ",pop后元素个数为:" + queue.size()); System.err.println("peek第二个元素,元素值为:" + queue.peek() + ",peek后元素个数为:" + queue.size()); System.err.println("pop第二个元素,元素值为:" + queue.pop() + ",pop后元素个数为:" + queue.size()); System.err.println("peek第三个元素,元素值为:" + queue.peek() + ",peek后元素个数为:" + queue.size()); System.err.println("pop第三个元素,元素值为:" + queue.pop() + ",pop后元素个数为:" + queue.size()); System.err.println("peek第四个元素,元素值为:" + queue.peek() + ",peek后元素个数为:" + queue.size()); System.err.println("pop第四个元素,元素值为:" + queue.pop() + ",pop后元素个数为:" + queue.size()); } }
|