1. /**
2.  * Queue.java
3.  * 线性表之队列
4.  * 队列有如下特点:
5.  * 先进先出
6.  * 即,从尾部添加(push)新数据
7.  *    从头部取出(pop)数据
8.  */
9.   
10.   
11. /**
12.  * 队列(Queue)也是一种运算受限的线性表。
13.  * 它只允许在表的一端进行插入,而在另一端进行删除。
14.  * 允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。
15.  */
16. package
17.   
18.   
19. /**
20.  * @author sunxboy
21.  * 9:59:59 AM  May 22, 2007
22.  */
23. public class
24.   
25. int
26. int
27. int
28. int front;  //允许删除的一端
29. int rear;   //允许插入的一端
30. public Queue(int
31. this.maxSize = maxSize;  
32. this.data = new int[maxSize];  
33. 0;  
34. 0;  
35. 0;  
36.     }  
37.       
38. public boolean
39. return size==0;  
40.     }  
41.       
42. public boolean
43. return
44.     }  
45.       
46. /**
47.      * 循环队列
48.      * @param data
49.      * @return
50.      */
51. public boolean push(int data)throws
52.           
53. if(isFull())  
54. throw new Exception("队列已满!");  
55.         size++;  
56. this.data[rear]= data;  
57.               
58. //          if(rear+1==maxSize)
59. //                 rear=0;
60. //           else
61. //               rear++;
62.   
63. 1)%maxSize;  
64.           
65. return true;  
66.   
67.     }  
68.       
69. public int pop() throws
70. int
71. if(isEmpty())  
72. throw new Exception("队列是空的.");  
73. this.data[this.front];  
74.   
75. this.size--;  
76. //      if(front+1==maxSize)
77. //             front=0;
78. //       else
79. //            front++;
80. 1)%maxSize;  
81. return
82.     }  
83.       
84.       
85. public static void main(String[] args) throws
86. new Queue(10);  
87. 1);  
88.         queue.pop();  
89. //      queue.pop();
90. 2);  
91. 3);  
92. 4);  
93. 5);  
94. 6);  
95. 7);  
96. 8);  
97. 9);  
98. 10);  
99. //      queue.push(11);
100. while(!queue.isEmpty())  
101.         {  
102.             System.out.println(queue.pop());  
103.         }  
104.           
105.     }  
106. }