1)队列定义:一种先进先出的线性表(也可称为FIFO表-First In First Out)。
队列是限制在两个端点进行插入和删除操作的线性表。
能够插入元素的一端成为队尾,能够删除元素的一端称为队首或队头。
2)应用实例
&1.车站排队买票。食堂排队买饭,
排在队头的人处理完之后从队头离开,而后来的人则必须排在队尾等待~
&2.计算机处理文件打印,
对于多个请求的打印文件,操作系统把它们当作可以被延迟的任务,按照应用程序提出打印任务的先后顺序作为实际打印的先后顺序,即“先进先出”原则。
3)队列的存储结构。
&1.顺序存储,
又被称为顺序队列,它也是利用一组地址连续的存储单元存放队列中的元素。由于队列中元素的插入和删除限定在表的两端进行,因此设置队头指针和队尾指针,分别指出当前的队头和队尾。
&2.链式存储
又被称为链队列,为便于操作,给队列添加一个头结点,并令头指针指向头结点。
因此,队列为空的判定条件是头指针和尾指针的值相同,且均指向头结点。
4)队列的基本运算
&1.入队操作InQueue(&q,x)
初始条件:队列q存在,且未满
操作结果:插入一个元素x到队尾,队列长度 +1;
&2.出队操作OutQueue(&q,&x)
初始条件:队列q存在,且非空
操作结果:将队首元素赋值给x带回主调函数,然后就爱那个队首元素从队列中删除,队列长度-1;
&3.读队头元素ReadFont(q,&x)
初始条件:队列q存在,且非空
操作结果:将队首元素赋值给x带回主调函数。队列不变
&4.显示队列元素ShowQueue(q)
初始条件:队列q存在,且非空
操作结果:显示队列中的所有元素。
&5.判队空操作QEmpty(q)
初始条件:队列q存在
操作结果:若队空则返回1,否则返回0
&6.判队满操作QFull(q)
初始条件:队列q存在
操作结果:若队满则返回1,否则返回0
&7.求队列列长度QLen(q)
初始条件:队列q存在
操作结果:返回队列中的当前元素个数