一、简介
1.1 概念
队列简称队
–他同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除;
在队列中把插入数据元素的一端称为队尾,删除数据元素的一端称为队头
;
向队尾插入元素称为进队和入队,新元素入队后成为新的队尾元素;从队列中删除元素称为离队或出队,元素出队后,其后续元素成为新的队头元素;
由于队列的插入和删除操作分别在队尾和队头进行,每个元素必然按照进入的次序离队,也就是说先进队的元素必然先离队,所以称队列为先进先出表
。
顺序队列
–利用顺序存储方式实现的队列称为顺序队列。
1.2 结构图
二、简单实现
public class ArrQueue {
static final int MAXLEN = 5;
private String datas[] = new String[MAXLEN];
private int head = 0;
private int tail = 0;
public boolean inQueue(String data){
if (tail==MAXLEN){
System.out.println("队列满了");
return false;
}else {
datas[tail++] = data;
return true;
}
}
public String outQueue(){
if (head==tail){
System.out.println("队列空了");
return null;
}else {
return datas[head++];
}
}
public String peekQueue(){
if (head==tail){
System.out.println("队列为空");
return null;
}else {
return datas[head];
}
}
public boolean isFull(){
return tail==MAXLEN ? true:false;
}
public boolean isNull(){
return head==tail ? true:false;
}
public void clear(){
head = 0;
tail = 0;
System.out.println("队列已清空");
}
public int size(){
return tail-head;
}
public static void main(String[] args) {
ArrQueue queue = new ArrQueue();
queue.inQueue("数据1");
queue.inQueue("数据2");
queue.inQueue("数据3");
queue.inQueue("数据4");
queue.inQueue("数据5");
queue.inQueue("数据6");
System.out.println("队列头:"+queue.peekQueue());
queue.outQueue();
System.out.println("队列头:"+queue.peekQueue());
System.out.println("队列长度:"+queue.size());
queue.clear();
System.out.println("队列长度:"+queue.size());
}
}