《队列和数组》PPT课件.ppt
《《队列和数组》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《队列和数组》PPT课件.ppt(17页珍藏版)》请在三一办公上搜索。
1、1,3.2 队列3.2.1 队列的定义,队列是只能在一端插入、另一端删除的线性表。,2,3.2.2 队列的基本运算,初始化队列:init_queue(Q)判断队列是否为空:queue_empty(Q)取队头元素:queue_front(Q,x)入队:enqueue(Q,x)出队:outqueue(Q,x)判断队列是否为满:queue_full(Q),3,3.2.3 顺序队列,以顺序存储方式存储的队列叫做顺序队列。,类型说明:typedef struct elementtype datamaxsize;/存放元素的数组 int front,rear;/指向队头的前一个位置和队尾seqqueue;
2、,4,顺序队列会产生“假溢出”循环队列,基本操作:入队:rear=(rear+1)%maxsize;datarear=x;出队:front=(front+1)%maxsize;,5,难题:如何区分循环队列的满和空状态?,方法一:设置一个标志,以区分最后一次操作是入队还是出队操作。当头尾两个指针相等时,由该标志判断队列为满或空。,方法二:保留一个空间不用,即将仅剩一个空位置时的状态当作满状态,也就是不让rear指针赶上front指针。,6,循环队列运算的实现,初始化队列:void init_queue(seqqueue*Q)Q-front=0;Q-rear=0;,判断队列是否为空:BOOL qu
3、eue_empty(seqqueue Q)if(Q.front=Q.rear)return TRUE;else return FALSE;,判断队列是否为满:BOOL queue_full(seqqueue Q)if(1+Q.rear)%maxsize=Q.front)return TRUE;else return FALSE;,尾指针的下一个位置是头指针所指位置时为满,头尾指针相同,则肯定为空,7,入队void Enqueue(seqqueue*Q,elementtype x)if(queue_full(Q)error(“溢出”);else Q-rear=(1+Q-rear)%maxsize
4、;Q-dataQ-rear=x;,取队头元素:elementtype queue_front(seqqueue Q,elementtype*x)if(queue_empty(Q)error(“队空”);else*x=Q.data(Q.front+1)%maxsize);,队头元素在front指针所指位置的下一个位置,往后移动尾指针,填进待插入的元素,出队void Outqueue(seqqueue*Q,elementtype*x)if(queue_ empty(*Q)error(“队空,不能出队”);else Q-front=(Q-front+1)%maxsize;*x=Q-dataQ-fro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 队列和数组 队列 数组 PPT 课件

链接地址:https://www.31ppt.com/p-5617631.html