一、什么是队列结构
一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。
分类:
- 顺序队列结构
- 链式队列结构
基本操作:
- 入队列
- 出队列
二:准备数据
static final int QUEUELEN=15;
class DATA{
String name;
int age;
}
class SQType{
DATA date[]=new DATA[QUEUELEN];
int head;
int tail;
}
在类SQType中data为数据元素,head为队头序号,tail为队尾序号,当head为0时队为空,当tail为QUEUELEN时表示队列已满。
三:初始化队列
在使用队列前首先要创建个空队列,即初始化队列。
- 按符号常量QUEUELEN指定的大小申请一片内存空间用来保存对列中的数据。
- 设置head=0和tail=0,表示一个空队列。
SQType SQTypeInit(){
SQType q;
if((q=new SQType())!=null){
q.head=0;
q.tail=0;
return q;
}
else{
return null;
}
}
四:判断空队列
int SQTypeIsEmpty(SQType q){
int temp=0;
if(q.head=q.tail){
temp=1;
}
return temp;
}
//判断队列是否满了
int SQTypeIsNull(SQType q){
int temp=0;
if(q.head=QUEUELEN){
temp=1;
}
return temp;
}
//清空队列
void SQTypeClear(SQType q){
q.head=0;
q.tail =0;
}
//释放空间
void SQTypeFree(SQType q){
if(q!=null){
q=null;
}
}
//入队列
int IntSQType(SQType q,DATA data){
if(SQTypeIsEmpty(q)==1){
System.out.println("队列已满,操作失败");
return 0;
}
else{
q.data[q.tail++]=data;
return 1;
}
}
//出队列
DATA OutSQType(SQType q){
if(SQTypeIsEmpty(q)==1){
System.out.println("队列为空");
return null;
}
else{
return q.data[q.head++];
}
return null;
}
//读取节点
DATA PeekSQType(SQType q){
if(SQTypeIsEmpty(q)==1){
System.out.println("队列为空");
return null;
}
else{
return q.data[q.head];
}return null;
}
//计算队列长度
int SQTypeLen(SQType q){
int temp;
temp=q.tail-q.head;
return temp;
}