队列结构是从数据运算来分类的,也就是说队列结构具有特殊的运算规则。从数据运算角度讲,队列结构是按照“先进先出”(First in First Out, FIFO)的原则处理结点数据的。队列是一种线性结构,从存储角度分可分为以下两种:
1.顺序队列 2.链式队列
基本操作:
1.入队列:将一个元素添加到队尾(相当于到队列最后排队等候)。
2.出队列:将队头元素取出,同时删除该元素,使后一个元素成为队头。
下面是数据结构:
1.数据定义
class DATA { String name; int age; } class SQType { static final int QUEUELEN=15; DATA[] data=new DATA[QUEUELEN]; //队列数组 int head; //队头 int tail; //队尾 }
2.队列初始化
SQType SQTypeInit() { SQType q; if((q=new SQType())!=null) //申请内存 { q.head = 0; //设置队头 q.tail = 0; //设置队尾 return q; } else { return null; //返回空 } }
3.判断队列是否已满/空
int SQTypeIsEmpty(SQType q) //判断空队列 { int temp=0; if(q.head==q.tail) temp=1; return (temp); } int SQTypeIsFull(SQType q) // 判断满队列 { int temp=0; if(q.tail==QUEUELEN) temp=1; return (temp); }
4.清空队列+释放空间
void SQTypeClear(SQType q) //清空队列 { q.head = 0; //设置队头 q.tail = 0; //设置队尾 } void SQTypeFree(SQType q) //释放队列 { if (q!=null) { q=null; } }
5.入/出队列
int InSQType(SQType q,DATA data) //入队列 { if(q.tail==QUEUELEN) { System.out.print("队列已满!\n"); return(0); } else { q.data[q.tail++]=data; //将元素入队列 return(1); } } DATA4 OutSQType(SQType q) //出队列 { if(q.head==q.tail) { System.out.print("\n队列已空!操作失败!\n"); System.exit(0); } else { return q.data[q.head++]; } return null; }
6.读取结点数据
DATA PeekSQType(SQType q) //读结点数据 { if(SQTypeIsEmpty(q)==1) { System.out.print("\n空队列!\n"); return null; } else { return q.data[q.head]; } }
7.计算队列长度
int SQTypeLen(SQType q) //计算队列长度 { int temp; temp=q.tail-q.head; return (temp); }队列也算是一种基础的数据结构,在以后数的遍历算法以及后续的很多东西都会用到。