Java_队列Queue


队列:先进先出;队头删除,队尾插入
属性:队头指针front,队尾指针rear
方法:入列enQueue,出列deQueue,判断是否为空isEmpty,判断是否已满isFull,清空makeEmpty,返回元素个数size

循环队列java代码

 

public class MyQueue{
 private int front = 0,rear = 0;
 private String[] queue;

 public MyQueue(int maxSize){
  queue = new String[maxSize];
 }

 //入列
 public void enQueue(String item){
  if(rear == queue.length && front > 0)
   rear = 0;
  if(!this.isFull())
   queue[rear++] = item;
 }

 //出列
 public void deQueue(){
  if(front == queue.length && rear > 0)
   front = 0;
  if(!this.isEmpty())
   queue[front++] = null;
 }

 //判空
 public boolean isEmpty(){
  if(front == rear){
   return true;
  }else{
   return false;
  }
 }

 //判满
 public boolean isFull(){
  if(front ==( rear + 1)% (queue.length + 1)){
   return true;
  }else{
   return false;
  }
 }

 //返回元素个数
 public int size(){
  if(rear >= front)
   return rear - front;
  else
   return queue.length + 1 - front + rear;
 }

 //清空
 public void makeEmpty(){
  rear = front;
 }

 //验证
 public static void main(String[] args){
  MyQueue mq = new MyQueue(3);
  mq.enQueue("Hello");
  mq.enQueue("World");
  mq.enQueue("!");
  System.out.println("size: "+mq.size());
  System.out.println("full? "+mq.isFull());

  mq.deQueue();
  System.out.println("size: "+mq.size());
  System.out.println("full? "+mq.isFull());

  mq.enQueue("test");
  System.out.println("size: "+mq.size());
  System.out.println("full? "+mq.isFull());

  mq.makeEmpty();
  System.out.println("size: "+mq.size());
  System.out.println("full? "+mq.isFull());
  System.out.println("empty? "+mq.isEmpty());
 }

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM