第十三讲:线性结构(线形表格、栈和队列)2.ppt

第十三讲:线性结构(线形表格、栈和队列)2.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十三讲:线性结构(线形表格、栈和队列)2

* * 第13讲: 数据结构之 队列 ◆中缀表达式求值(zhong.pas) ◆中缀表达式转换为后缀表达式(change.pas) 一、概念 在一端进行插入(进队列),在另一端进行删除(出队列)的线性表。 插入的一端称为队尾:closed; (指向队尾,最后一个元素) 删除的一端称为队首:open (习惯指向队首的前一位置,空的位置) 3 2 6 5 4 1 9 open closed 队列数组a下标: 1 2 3 4 5 6 7…… 队列空:open =closed ; 非空:openclosed 1、 定义: Const max Var q:array[1..max] of datatype; open,closed:integer; 2、队列的基本运算 队列的运算主要有两种: 入队:procedure add(x); 出队:function del 1)、过程ADD(x)—在队列q的尾端插入元素x procedure ADD( x:qtyper); begin {后移队尾指针并插入元素x} closed:=closed+1; q[closed]:=x; end;{ADD} 2)、函数DEL—取出q队列的队首元素 function DEL; begin open:=open+1; del:=q[open]; end;{DEL} 重要的用途:bfs(广度优先搜索算法) 【竞赛试题】 ①已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是(????? )。(NOIP9) ??? A) 5????????? B) 41???????? C) 77??????? D) 13?????? E) 18 ②设栈S和队列Q的初始状态为空,元素e 1 ,e 2 ,e 3 ,e 4 ,e 5 ,e 6依次通过栈S,一个元素出栈后即进入队列Q,若出队的顺序为e 2 ,e 4 ,e 3 ,e 6 ,e 5 ,e 1 ,则栈S的容量至少应该为( )。(NOIP8) A)2 B)3 C)4 D)5 二、队列的应用 1、合并石子 【问题描述:】 小Ray在河边玩耍,无意中发现一些很漂亮的石子堆,于是他决定把这些石子搬回家。河滩上共有 n堆石子,小Ray在把石子搬回家之前首先要把这n堆石子合并为一堆石子。已知小Ray每次可以选择其中的两堆石子合并为一堆,合并一次石子他要消耗的体力是两堆石子的数量和。 请计算小Ray把n堆石子合并成一堆最少消耗的体力值是多少。 【输入:】 第一行:n(=30000). 第二行:那个用空格隔开的数,分别表示n堆石子的数量(每堆10000)。 【输出:】 n堆石子合并成一堆所消耗的最小体力值。 说明:分别用队列和堆两种算法实现。 【样例输入:】 3 1 2 4 【样例输出:】 10 opena:=1; openb:=1; closedb:=0; ans:=0; for i:=1 to n-1 do begin sum:=a[opena]+a[opena+1]; f:=1; if a[opena]+b[openb]sum then begin sum:=a[opena]+b[openb]; f:=2; end; if b[openb]+b[openb+1]sum then begin sum:=b[openb]+b[openb+1]; f:=3; end; inc(closedb); b[closedb]:=sum; inc(ans,sum); case f of 1: inc(opena,2); 2: begin inc(opena); inc(openb); end; 3: inc(openb,2); end; end;

文档评论(0)

ldj215323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档