数据结构课件第三章2.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.3 栈的应用举例 队列的基本特征 补充知识---结构体 结构体是一种构造类型,满足将不同类型的数据组合成一个整体。 结构体类型一般形式为: struct 结构体名 {成员列表}; struct student { int num; char name[20]; char sex; }; struct student stu1; //定义变量stu1 struct student *p; //定义指针变量p,指向一个struct student类型 的数据 定义结构体变量 struct student stu1; struct student *p; //p指向一个struct student类型的数据 引用结构体变量中成员的方法 结构体变量名.成员名 stu1.num: stu1变量中的num成员 (*p).num: *p变量中的num成员 为了方便使用和直观, (*p).num改用p-num来代替,表示p所指向的结构体变量中的num成员。 队列的顺序表示 队列的顺序存储结构和顺序栈类似:用一组地址连续的存储单元依次存放从队列头到队列尾的元素外,还附设两个指针front指向队头元素,rear指向队尾元素的下一个位置。 约定空队列:front=rear=0; 插入新队尾元素,rear+1;每删除队头元素,front+1; 循环队列——顺序映象 为了有效利用存储空间,采用循环队列的形式,指针和队列元素间的关系不变。 队列空和队列满的判定条件 队列满:当队列空间都被占满时,Q.rear==Q.front。由于队列空时,也满足条件Q.rear==Q.front,因此Q.rear==Q.front无法判别队列是“空”还是“满”。 约定队列满的条件为:队列头指针在队列尾指针的下一位置。 队列空的条件:Q.front==Q.rear==0; 思考:为什么顺序栈不采用循环栈的形式? 课堂习题 设栈的输入序列为(1,2,3,4),则()不可能是其出栈序列。 1243 2134 1432 4312 3214 答案:D 输入序列1,2,…,n得到的输出序列P1,P2…Pn, 不可能出现ijk时有Pj=Pk=Pi;d项的4312可知:i=2,j=3,k=4,有pi=3,pj=1,pk=2,pjpkpi,故选D。 2. 若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0和3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少? 1和5 2和4 4和2 5和1 答案:B 3. 设栈的输入序列是1,2…,n,若输出序列的第一个元素是n,则第i个输出元素是()。 不确定 n-i+1 i n-i 答案:B 4. 假定一个顺序循环队列的队首和队尾指针分别用front和rear表示,则判队空的条件是()。 front+1==rear front==rear+1 front=0 front==rear 答案:D 5. 假定一个顺序循环队列存储于数组A[n]中,其队首和队尾指针分别用front和rear表示,则判断队满的条件是() (rear-1)%n==front; (rear+1)%n==front; rear==(front-1)%n; rear==(front+1)%n; 答案:B 6. 已知输入序列为1234,则输入受限(仅由一端输入)但输出不受限(两端均可输出)的双端队列不可以得到()输出序列。 4231 1324 3214 4213 2341 答案:A,D 栈S的输入元素的顺序为1、2、3、4、5,要在栈S的输出端得到43521,则应进行栈的基本运算表示应为: push(s,1) push(s,2) push(s,3) push(s,4) pop(s) pop(s) push(s,5) pop(s) pop(s) pop(s) 写出下列程序段的输出结果(栈的元素类型SElemType为char) Void main(){ Stack S; char x,y; InitStack(S); x=‘c’; y=‘k’; Push(S,x); Push(S,’a’); Push(S,y); Pop(S,x); Push(S,’t’); Push(S,x); Pop(S,x); Push(S,’s’); while(!StackEmpty(S)) { Pop(S,y); printf(y); } printf(x); } 已知指针la和

您可能关注的文档

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档