![]()
1 package myqueue;
2
3 import mylinkedlist.MyLinkedList;
4
5 import java.util.NoSuchElementException;
6
7 public class myQueue <E>{
8 private Node head;
9 private Node end;
10 private int size;
11
12 private static class Node<E>{
13 public Node next;
14 public Node prev;
15 E val;
16 public Node(E val){
17 this.val = val;
18 }
19 public Node(Node prev,E val,Node next){
20 this.val = val;
21 this.next = next;
22 this.prev = prev;
23 }
24 }
25
26 public myQueue(){
27 head = new Node(null);
28 end = new Node(null);
29 head.next = end;
30 end.prev = head;
31
32 }
33 public void enque(E e){
34 Node nodeToEnque = new Node(end.prev,e,end);
35 end.prev.next = nodeToEnque;
36 end.prev = nodeToEnque;
37 size++;
38 }
39 public E deque(){
40 //先判断是否队空
41 if(isEmpty()){
42 throw new NoSuchElementException();
43 }
44 Node nodeToRemove = head.next;
45 head.next = head.next.next;
46 nodeToRemove.next.prev = head;
47 size--;
48 return (E)nodeToRemove.val;
49
50 }
51
52 public boolean isEmpty() {
53 return size==0;
54 }
55 public int size(){
56 return size;
57 }
58 public E peek(){
59 return (E)head.next.val;
60 }
61 public String toString(){
62 StringBuilder sb = new StringBuilder("[");
63 Node x =head.next;
64 while(x!=end){
65 sb.append(x.val).append(", ");
66 x =x.next;
67 }
68 if(size !=0) sb.delete(sb.length()-2,sb.length());
69 return sb.append("]").toString();
70 }
71
72 }
1 package myqueue;
2
3 public class TestMyQueue {
4 public static void main(String args[]){
5 myQueue<Integer> que = new myQueue();
6 System.out.println("队列空吗?"+que.isEmpty());
7 que.enque(1);
8 que.enque(2);
9 que.enque(3);
10 que.enque(4);
11 System.out.println(que.toString()+",长度位:"+que.size());
12 System.out.println("出队:"+que.deque());
13 System.out.println("队列空吗?"+que.isEmpty());
14
15
16 }
17 }