队列:先进先出;队头删除,队尾插入
属性:队头指针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());
}
}