队列结构是从数据运算来分类的,也就是说队列结构具有特殊的运算规则。从数据运算角度讲,队列结构是按照“先进先出”(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;
}
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);
} 队列也算是一种基础的数据结构,在以后数的遍历算法以及后续的很多东西都会用到。
本文介绍了队列这种基础数据结构的概念及其实现方式,包括顺序队列和链式队列,并详细讲解了队列的基本操作如入队、出队等,还提供了队列的初始化、判断队列是否为空或满、清空队列以及读取队列中数据的方法。
1326

被折叠的 条评论
为什么被折叠?



