赞
踩
目录
队列是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除,向队列中插入元素称为入队或进队;删除元素称为出队或离队。
队列的特点:先进先出
结构:
InitQueue(&Q):初始化 队列,构造一个空队列Q
QueueEmpty(Q):判队列空,若队列Q为空返回ture;否则返回false
EnQueue(&Q,x):入队,若队列Q未满,将x加入,使之成为新的队尾
DeQueue(&Q,x):出队,若队列Q非空,删除队头元素,并用x返回
GetHead(Q,&x):读队头元素,若队列Q非空,则将队头元素赋值给x
分配一块连续的存储单元存放队列中的元素,并附设两个指针:队头指针front指向队头元素,队尾指针rear指向队尾元素的下一个位置(具体问题具体分析)。
初始时:Q.front=Q.rear=0
队首指针进1:Q.front=(Q.front+1)%MaxSize
队尾指针进1:Q.rear=(Q.rear+1)%MaxSize
队列长度:(Q.rear+MaxSize-Q.front)%MaxSize
队空:Q.front==Q.rear
队满:
牺牲一个单元来区分队空和队满,即“队头指针在队尾指针的下一位置作为队满的标志”:
类型中增设表示元素个数的数据成员:
类型中增设tag数据成员,以区分是队满还是队空:
队列的链式表示称为链队列,是一个同时带有队头指针和队尾指针的单链表。
头指针指向对头结点
尾指针指向队尾结点
当Q.front==NULL且Q.rear==NULL时,链式队列为空。
适合于数据元素变动比较大的情形。
不存在队列满且产生溢出的问题。
双端队列是指允许两端都可以进行入队和出队操作的队列;
逻辑结构仍是线性结构;
将队列的两端分别称为前端和后端,两端都可以入队和出队。
输出受限的双端队列:允许在一端进行插入和删除,但在另一端只允许插入的双端队列;
输入受限的双端队列:允许在一端进行插入和删除,但在另一端只允许删除的双端队列;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。