普通队列
``public class shuzu_duilie {
public static void main(String[] args) {
duilie_1 duilie_1 = new duilie_1(5);<br /> duilie_1.add(1);<br /> duilie_1.add(2);<br /> duilie_1.add(3);<br /> duilie_1.add(3);<br /> duilie_1.add(3);for (Object allDatum : duilie_1.getAllData()) {<br /> System._out_.println(allDatum);<br /> }<br /> System._out_.println("++++++++++++++++++++++++++++++++++");<br /> System._out_.println(duilie_1.pop());<br /> System._out_.println(duilie_1.pop());<br /> System._out_.println(duilie_1.pop());<br /> System._out_.println(duilie_1.pop());<br /> System._out_.println(duilie_1.pop());<br /> System._out_.println(duilie_1.pop());}<br />}<br />class duilie_1{<br /> private int maxSize;<br /> private int front;<br /> private int rear;<br /> private Object[] obj ;public duilie_1(int maxSize) {<br /> this.maxSize = maxSize;<br /> obj =new Object[maxSize];<br /> this.front=-1;_//指向队列头部的前一个位置_<br />_ _this.rear=-1;_//指向队列尾部_<br />_ _}public boolean isFull(){<br /> if(this.rear==this.maxSize-1){<br /> System._out_.println("队列已满");<br /> return true;<br /> }else{<br /> System._out_.println("队列未满");<br /> return false;<br /> }<br /> }public boolean isEmpty(){<br /> if(this.front==this.rear){<br /> System._out_.println("队列为空");<br /> return true;<br /> }else{<br /> System._out_.println("队列不为空");<br /> return false;<br /> }<br /> }public void add(Object o){<br /> if(!isFull()){<br /> obj[++rear]=o;<br /> }}public Object pop(){<br /> if(!isEmpty()){<br /> return obj[++front];<br /> }else {<br /> throw new RuntimeException("队列为空,不能取数据");<br /> }<br /> }public Object[] getAllData(){<br /> return this.obj;<br /> }
}
循环队列
``public class xunhaunduilie {
public static void main(String[] args) {
xunhuan xunhuan = new xunhuan(5);
xunhuan.isEmpty();
xunhuan.add(10);
xunhuan.add(15);
xunhuan.add(19);
xunhuan.add(15);
xunhuan.add(565);
xunhuan.add(105);
xunhuan.isFull();
for (Object allDatum : xunhuan.getAllData()) {<br /> System._out_.println(allDatum);<br /> }<br /> System._out_.println("__________________________");<br /> System._out_.println(xunhuan.pop());<br /> System._out_.println(xunhuan.pop());<br /> System._out_.println(xunhuan.pop());System._out_.println("__________________________");<br /> for (Object allDatum : xunhuan.getAllData()) {<br /> System._out_.println(allDatum);<br /> }<br /> System._out_.println("__________________________");<br /> xunhuan.add(565);<br /> xunhuan.add(105);<br /> xunhuan.add(565);<br /> xunhuan.add(1664);<br /> System._out_.println("__________________________");<br /> for (Object allDatum : xunhuan.getAllData()) {<br /> System._out_.println(allDatum);<br /> }<br /> System._out_.println("__________________________");<br /> xunhuan.isFull();<br /> System._out_.println(xunhuan.yuukou());}<br />}
//长度为n,只存n-1个数据,因为希望有一个空的地址
class xunhuan{
private int maxSize;<br /> private int front=0;<br /> private int rear=0;<br /> private Object[] obj;public xunhuan(int maxSize) {<br /> this.maxSize = maxSize;<br /> obj=new Object[maxSize];<br /> }_//判断是否为空_<br />_ _public boolean isEmpty(){<br /> if(this.front==this.rear){<br /> System._out_.println("队列为空");<br /> return true;<br /> }else{<br /> System._out_.println("队列不为空");<br /> return false;<br /> }<br /> }_//判断是否满了_<br />_ _public boolean isFull(){<br /> if((this.rear+1)%this.maxSize==this.front){<br /> System._out_.println("队列满了");<br /> return true;<br /> }else{<br /> System._out_.println("队列未满");<br /> return false;<br /> }}_//队列的有效个数_<br />_ _public int yuukou(){<br /> return (this.rear+this.maxSize-this.front)%this.maxSize;<br /> }_//添加_<br />_ _public void add(Object o){<br /> if(!isFull()){<br /> obj[this.rear++]=o;<br /> if(this.rear==this.maxSize){<br /> this.rear=0;<br /> }<br /> }<br /> }_//出队列_<br />_ _public Object pop(){<br /> if(!isEmpty()){<br /> Object o = obj[this.front];<br /> obj[this.front]=null;<br /> this.front++;<br /> if(this.front==maxSize){<br /> this.front=0;<br /> }<br /> return o;<br /> }else{<br /> throw new RuntimeException("队列为空,不能取数据");<br /> }}_//_<br />_ _public Object[] getAllData(){<br /> return this.obj;<br /> }
}
