- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
队列基本操作与应用
队列的基本操作及应用 队列的定义 队列(queue)简称队,是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。我们把进行插入的一端称作队尾(rear),进行删除的一端称作队头(front)。 队列也称作先进先出表(First In First Out,简称FIFO表)。 基本术语 队空:当队列中没有元素时称为空队列; 队满:当队列中单元全部被占用; 进队:向队列中插入新元素; 出队:从队列中删除元素; (假)溢出:队尾指针指向最后一个位置,但队头前面仍有空闲的单元可被利用。 队列操作示意图 队列的存储结构 1.顺序存储 顺序存储的队称为顺序队列 type queue=record data:array[0..maxsize-1] of elemtype front, rear : integer ; end; front指向队列中第一个元素的前一个单元; rear指向队列中最后一个元素单元。 队列的存储结构 2.链式存储 链式存储的队列称为链队 队列的基本运算 (1)初始化:设定Q为一空队列: procedure iniqueue(var Q:queue); begin Q.front:=-1; Q.rear:=-1; end; 队列的基本运算 (2)判队列空:若队列Q为空,则返回值true,否则返回值false: function qempty(Q:queue):Boolean; begin qempty:=(Q.front=Q.rear) end; 队列的基本运算 (3)判队满:若队列满,则返回值true,否则返回值false: function qfull(Q:queue):Boolean; begin Qfull:=(Q.rear=maxsize-1); end; 队列的基本运算 (4)元素进队:若队列Q不满时,把元素X插入到队列Q的队尾,否则返回信息“Overflow”: procedure inqueue(var Q:queue;X:elemtype); begin if qfull(Q) then writeln(‘Overflow’) else begin Q.rear:=Q.rear+1; Q.data[Q.rear]:=X; end end; 队列的基本运算 (5)元素出队:若队列Q不空,则把队头元素删除并返回值给X,否则输出信息“Underflow”: procedure delqueue(var Q:queue;var X:elemtype); begin if qempty(Q) then writeln(‘Underflow’) else begin Q.front:=Q.front+1; X:=Q.data[Q.front]; end; end; 队列的基本运算 (6)取队头元素:若队列不空,返回队头元素的值,否则返回信息“Underflow”: function gethead(Q:queue):elemtype; begin if qempty(Q) then writeln(‘Underflow’) else gethead:=Q.data[Q.front+1]; end; 循环队列 所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用,循环队列的定义如队列。 循环队列的基本运算 (1)初始化: procedure iniqueue(var Q:queue); begin Q.front:=0; Q.rear:=0; end; 循环队列的基本运算 (2)判队列空: function qempty(Q:queue):Boolean; begin qempty:=(Q.front=Q.rear) end; 循环队列的基本运算 (3)判队满: function qfull(Q:queue):Boolean; begin qfull:=((Q.rear+1) mod maxsize=Q.front); end; 循环队列的基本运算 (4)元素进队: procedure inqueue(var Q:queue;X:elemtype); begin if qfull(Q) then writeln(‘Overflow’) else begin Q.rear:=(Q.re
您可能关注的文档
- 过程控制期末试题与其答案.doc
- 辽宁联通工资-职位薪酬体系与优化调整方案介绍.ppt
- 超市之间对比.ppt
- 让学生拥有解决问题经验.ppt
- 过程装备腐蚀与防护(闫康平)(二版)_第3章_金属在某些环境中腐蚀.ppt
- 选修4第四章第四节《金属电化学腐蚀与防护》教学设计.doc
- 逆矩阵计算.ppt
- 较完整六西格玛案例.ppt
- 连锁超市组织结构市场调研.ppt
- 逐步综合结转分步法与其成本还原.doc
- 甘肃省白银市会宁县第一中学2025届高三3月份第一次模拟考试化学试卷含解析.doc
- 2025届吉林市第一中学高考考前模拟生物试题含解析.doc
- 四川省三台县芦溪中学2025届高三下第一次测试生物试题含解析.doc
- 2025届江苏省启东市吕四中学高三适应性调研考试历史试题含解析.doc
- 浙江省宁波市十校2025届高三二诊模拟考试历史试卷含解析.doc
- 甘肃省甘南2025届高考生物必刷试卷含解析.doc
- 河北省石家庄市一中、唐山一中等“五个一”名校2025届高考历史四模试卷含解析.doc
- 江西省南昌市进贤一中2025届高考生物考前最后一卷预测卷含解析.doc
- 甘肃省白银市会宁县第四中学2025届高三第二次模拟考试历史试卷含解析.doc
- 宁夏银川市宁夏大学附属中学2025届高考化学押题试卷含解析.doc
文档评论(0)