- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
循环队列 基本思想:把队列设想成环形,让sq[0]接在sq[M-1]之后,若rear+1=M,则令rear=0.实现:利用“模”运算;入队: sq[rear]=x ;rear=(rear+1) %M; 出队:x=sq[front];front=(front+1)%M; 0 1 2 3 4 5 rear front J4 J5 J6 0 1 2 3 4 5 rear front J9 J8 J7 J4 J5 J6 0 1 2 3 4 5 rear front 初始状态 J4,J5,J6出队 J7,J8,J9入队 队空:front=rear 队满:front=rear 3.3.3 循环队列 2、循环队列上基本操作的实现 (1)初始化操作 InitCirQueue(Q,QSize) 创建一个空间大小为Qsize的空队列Q (2) 判空操作 queueIsEmpty(Q) 判断队列是否为空,只需判断其队头指针Q .front与队尾指针Q.rear是否相等 清空操作 clearQueue(Q) (3)入队操作 insertQueue(Q,e) 入队操作时,若队列Q已满,就不再进行插入,操作失败。 (4)出队 操作 deleteQueue(Q,e) (5)取队头操作 getFront(Q,e) 当队列Q非空时,front指针所指向的即为队头元素。 (6)求队长操作 queueLength(Q) 队列的长度即为队列中元素的个数。 3.3.4 链式队列 1、链式队列的存储结构与类型定义 与线性表类似,队列也有两种存储表示;队列的链式存储----链队列链队列需要队头和队尾两个指针来确定;给链队列添加个头结点,并令头指针指向头结点。 头结点 ^ …... front 队头 队尾 rear 设队首、队尾指针front和rear, front指向头结点,rear指向队尾 2、 链式队列上基本操作实现: (1)初始化操作 InitLinkQueue(Q) 对链式队列Q进行初始化,即创建只含有一个头结点的空队列。 (2)队列的判空操作 queueIsEmpty(Q) 判断链式队列Q是否为空,可以有两种方法:一是盘对队头指针front与队尾指针rear是否相等;二是盘对队列链表中是否只有一个头结点,即Q.front-是否为空,一般采用方法一,即空队列的判断条件为:Q.front==Q.raer (3)入队操作 insertQueue(Q,e) 对于链式队列Q,入队时只需在rear所指向的队尾结点后面插入新结点,同时rear再指向新的队尾结点。 (4)出队操作 deleteQueue(Q,e) 当链式队列Q非空时,其出队操作可分为两种情况讨论。一般情况下,当队列长度大于1时,只需通过修改链表头结点的后继指针来删除队头元素结点即可。 (5)取队头操作 getFront(Q,e) 当队列Q非空时,链表头结点的后继指针所指向的结点即为队头结点。 3.3.5 队列的应用 队列在日常生活中和计算机程序设计中,有着非常重要的作用,在此,仅举出两个方面例子来说明它。 第一个例子就是CPU资源的竞争问题。在具有多个终端的计算机系统中,有多个用户需要使用CPU各自运行自己的程序,它们分别通过各自终端向操作系统提出使用CPU的请求,操作系统按照每个请求在时间上的先后顺序,将其排成一个队列,每次把CPU分配给队头用户使用,当相应的程序运行结束,则令其出队,再把CPU分配给新的队头用户,直到所有用户任务处理完毕。 第二个例子就是主机与外部设备之间速度不匹配的问题。以主机和打印机为例来说明,主机输出数据给打印机打印,主机输出数据的速度比打印机打印的速度要快得多,若直接把输出的数据送给打印机打印,由于速度不匹配,显然是不行的。所以解决的方法是设置一个打印数据缓冲区,主机把要打印输出的数据依此写如到这个缓冲区中,写满后就暂停输出,继而去做其它的事情,打印机就从缓冲区中按照先进先出的原则依次取出数据并打印,打印完后再向主机发出请求,主机接到请求后再向缓冲区写入打印数据,这样利用队列既保证了打印数据的正确,又使主机提高了效率。 * ---Reverse Polish Notation 第三章 栈和队列 第三章 栈和队列 第三章 栈和队列 第3章 栈和队列 栈和队列是两种特殊的线性表,是操作受限的线性表,称为限定性数据结构。 3.1 栈(stack) 3.1.1栈的定义和特点 定义:栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。 假设栈S=(a1,a2,a3,…,an),则a1称为栈
您可能关注的文档
最近下载
- 当代文学课前展示残雪.pptx VIP
- GBT .-电梯安全要求 第部分:满足电梯基本安全要求的安全参数.pptx VIP
- GB50278-2010 起重设备安装工程施工及验收规范.pdf VIP
- 2025年中国石英纤维行业市场行情监测及发展趋向研判报告.docx
- 卫生专业技术资格考试放射医学(中级344)专业实践能力新考纲精练试题精析.docx VIP
- 土源性线虫和食源性寄生虫检测方法.pptx VIP
- 产业梯度与区域产业兴替——以顺德蚕丝业为例.pdf VIP
- 在线网课学习课堂《学术交流英语(哈工 )》单元测试考核答案.pdf VIP
- 灌注桩钢筋笼自动计算套用表格.xls VIP
- 时代少年团介绍最新完整版本.pptx VIP
原创力文档


文档评论(0)