8.1:双向链表实现双端队列
作者:互联网
8.1:双向链表实现双端队列
双端队列,玩的head 和tail指针
1、双向链表
1 public static class Node<T> { 2 public T value; 3 public Node<T> last; 4 public Node<T> next; 5 6 public Node(T data) { 7 value = data; 8 } 9 }
1 public static class DoubleEndsQueue<T> { 2 public Node<T> head; 3 public Node<T> tail; 4 5 public void addFromHead(T value) { 6 Node<T> cur = new Node<T>(value); 7 if (head == null) { 8 head = cur; 9 tail = cur; 10 } else { 11 cur.next = head; 12 head.last = cur; 13 head = cur; 14 } 15 } 16 17 public void addFromBottom(T value) { 18 Node<T> cur = new Node<T>(value); 19 if (head == null) { 20 head = cur; 21 tail = cur; 22 } else { 23 cur.last = tail; 24 tail.next = cur; 25 tail = cur; 26 } 27 } 28 29 public T popFromHead() { 30 if (head == null) { 31 return null; 32 } 33 Node<T> cur = head; 34 if (head == tail) { 35 head = null; 36 tail = null; 37 } else { 38 head = head.next; 39 cur.next = null; 40 head.last = null; 41 } 42 return cur.value; 43 } 44 45 public T popFromBottom() { 46 if (head == null) { 47 return null; 48 } 49 Node<T> cur = tail; 50 if (head == tail) { 51 head = null; 52 tail = null; 53 } else { 54 tail = tail.last; 55 tail.next = null; 56 cur.last = null; 57 } 58 return cur.value; 59 } 60 61 public boolean isEmpty() { 62 return head == null; 63 } 64 65 }
标签:8.1,Node,head,cur,双端,链表,tail,null,public 来源: https://www.cnblogs.com/yzmarcus/p/16244994.html