队列:是一种数据结构,在我们的日常生活中也很常见,如我们在食堂排队打饭等等。有很多的扩展,如优先级队列,双端队列。。。。。先面说的是最为基本的队列。
特点:先进先出,劈如你在打饭时,先排队(即先进如队列),就会先打到饭出去(先出队列)
代码实现:
package queue;
/*基于数组的循环队列
* */
public class QueueArray {
private int maxSize;
private int front;
private int last;
private int nitems;
private Node[] queue;
public QueueArray(int n){
this.maxSize=n;
front=0;
last=-1;
nitems=0;
queue=new Node[this.maxSize];
}
/**
* 插入一个元素*/
public void inset(Node n){
if(isFull()){
System.out.println("队列已满,插入失败!");
return ;
}
if(last==(maxSize-1)){
last=-1;
}
queue[++last]=n;
nitems++;
}
/**
* 判断队列是否已满
* */
public boolean isFull(){
if(maxSize==nitems){
return true;
}
return false;
}
/**
* 判断队列是为空
* */
public boolean isEmpty(){
return nitems==0;
}
/**
* 移除一个元素*/
public Node remove(){
if(isEmpty()){
System.out.println("队列已为空,移除失败!");
return null;
}
Node n=queue[front++];
if(front==maxSize){
front=0;
}
nitems--;
return n;
}
/**
* 返回队列的长度*/
public int getSize(){
return maxSize;
}
/**
* 查看队头元素*/
public Node getFront(){
return queue[front];
}
}
package queue;
public class Node {
private int data;
public Node(){}
public Node(int data){
this.data=data;
}
public void setData(int data){
this.data=data;
}
public int getData(){
return this.data;
}
}