普通队列

``public class shuzu_duilie {
public static void main(String[] args) {

  1. 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);
  2. 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());
  3. }<br />}<br />class duilie_1{<br /> private int maxSize;<br /> private int front;<br /> private int rear;<br /> private Object[] obj ;
  4. public duilie_1(int maxSize) {<br /> this.maxSize = maxSize;<br /> obj =new Object[maxSize];<br /> this.front=-1;_//指向队列头部的前一个位置_<br />_ _this.rear=-1;_//指向队列尾部_<br />_ _}
  5. 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 /> }
  6. 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 /> }
  7. public void add(Object o){<br /> if(!isFull()){<br /> obj[++rear]=o;<br /> }
  8. }
  9. public Object pop(){<br /> if(!isEmpty()){<br /> return obj[++front];<br /> }else {<br /> throw new RuntimeException("队列为空,不能取数据");<br /> }<br /> }
  10. 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();

  1. 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());
  2. 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());
  3. }<br />}

//长度为n,只存n-1个数据,因为希望有一个空的地址
class xunhuan{

  1. private int maxSize;<br /> private int front=0;<br /> private int rear=0;<br /> private Object[] obj;
  2. public xunhuan(int maxSize) {<br /> this.maxSize = maxSize;<br /> obj=new Object[maxSize];<br /> }
  3. _//判断是否为空_<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 /> }
  4. _//判断是否满了_<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 /> }
  5. }
  6. _//队列的有效个数_<br />_ _public int yuukou(){<br /> return (this.rear+this.maxSize-this.front)%this.maxSize;<br /> }
  7. _//添加_<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 /> }
  8. _//出队列_<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 /> }
  9. }
  10. _//_<br />_ _public Object[] getAllData(){<br /> return this.obj;<br /> }

}