- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章C队列.ppt
* * 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现 3.4 队列 第三章 栈和队列 £3.3.1 队列的定义 £3.3 队列 队列(queue):是一种先进先出(first in first out,缩写为FIFO)的线性表。 它只允许在表的一端进行插入,而在另一端删除元素。 队头(front):在队列中允许删除元素的一端。 队尾(rear):在队列中允许插入元素的一端。 出队列 入队列 队头 队尾 … 图3.5 队列示意图 队列在程序设计中也经常出现。 一个最典型的例子就是操作系统中的作业排队。 在允许多道程序运行的计算机系统中,同时有几个作业运行。如果运行的结果都需要通过通道输出,那就是按请求输出的先后次序排队。每当通道传输,那就要按请求输出的先后次序排队。每当通道传输完毕可以接受新的输出任务时,队头的作业先从队列中退出作输出操作。凡是申请输出的作业都从队尾进入队列。 £3.3.2 队列的顺序存储结构 (1)定义 队列的顺序存储结构:是利用一组地址连续的存储单元 依次存放从队列头到队列尾的数据元素,同时附设指针front 和rear分别指示队列头元素及队列尾元素的位置。 (2)图形表示 5 4 3 2 1 0 Q.rear Q.front Q.rear Q.front Q.rear Q.front Q.rear Q.front (a) (b) (c) (d) 图3.6 队列的顺序存储结构示意图 (a)空队列 (b) J1、J2和J3相继入队列 (c) J1和J2相继被删除 (d) J4、J5和J6相继插入队列之后J3和J4被删除 J3 J2 J1 J3 J6 J5 尾指针总是指向队列尾元素的下一 位置 头指针总是指向队列头元素 a1 a2 an … … GetHead(Q, e) 初始条件:Q为非空队列。 操作结果:用e返回Q的队头元素。 a1 a2 an e … … EnQueue(Q, e) 初始条件:队列Q已存在。 操作结果:插入元素e为Q的新的队尾元素。 a1 a2 an … … DeQueue(Q, e) 初始条件:Q为非空队列。 操作结果:删除Q的队头元素,并用e返回其值。 ?顺序队列运算时的头、尾指针变化: B A D C 3 2 1 0 Sq-r Sq-f Sq-f Sq-r Sq-r Sq-f Sq-f Sq-r 空队列 A、B相继入队 A、B相继出队 C、D相继入队 图3.7 循环队列示意图 Q.rear Q.front 队列 maxsize-1 1 0 (3)循环队列满和空的判断: Q.rear Q.front Q.rear Q.front Q.rear Q.front 4 2 0 1 3 5 4 2 0 1 3 5 4 2 0 1 3 5 图3.8 循环队列满、空示意图 (a) 一般情况 (b)队列满时 (c)空队列 (4)循环队列类型的模块说明 //------------------循环队列——队列的顺序存储结构-------------------- #define MAXQSIZE 100 //最大队列长度 typedef struct { QElemType *base; //初始化的动态分配存储空间 int front; //头指针,若队列不空,指向队列头元素 int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置 } SqQueue; //------------------循环队列的基本操作的算法描述-------------------- Staus InitQueue (SqQueue Q) { //构造一个空队列Q Q.base = (QElemType*) malloc (MAXQSIZE * sizeof(QElemType)); if (!Q.base) exit (OVERFLOW); //存储分配失败 Q.front = Q
您可能关注的文档
- 第七章二元一次方程.doc
- 第七章介质对声波的吸收和吸声材料及吸声结构.doc
- 第七章从粒子到宇宙测试卷.doc
- 第七章价格与支付.ppt
- 第七章企业信息的管理程序和方法.doc
- 第七章传输层.ppt
- 第七章保险公司的业务经营.ppt
- 第七章信息资源管理补充.doc
- 第七章储运安全技术.ppt
- 第七章光盘检索.ppt
- 执业药师之《西药学综合知识与技能》综合练习附参考答案详解【培优b卷】.docx
- 2025年大学试题(财经商贸)-财务管理笔试考试历年典型考题及考点含含答案.docx
- 执业药师之《西药学综合知识与技能》综合练习附参考答案详解【a卷】.docx
- 外聘合同最新7篇.docx
- 2025年中山市坦洲人民医院招聘总会计师(1人)模拟试卷及参考答案详解1套.docx
- 2025年重庆市奉节县事业单位面向应届高校毕业生考核招聘工作人员考前自测高频考点模拟试题及答案详解(.docx
- 2025年大学试题(财经商贸)-财政与金融笔试考试历年典型考题及考点含含答案.docx
- 2025年调兵山市第三批公益性岗位招聘(15人)笔试备考试题及答案详解(夺冠).docx
- 2025年大学试题(财经商贸)-财政学笔试考试历年典型考题及考点含含答案.docx
- 2025年中国文物交流中心面向社会招聘高层次专业技术人员(1人)笔试备考试题含答案详解(名师推荐).docx
文档评论(0)