ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:69.33KB ,
资源ID:5296215      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5296215.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构三习题答案.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构三习题答案.docx

1、数据结构三习题答案第三章习题1. 按图3.1(b)所示铁道(两侧铁道均为单向行驶道)进行车厢调度,回答: 如进站地车厢序列为123,则可能得到地出站车厢序列是什么?如进站地车厢序列为123456,能否得到435612和135426地出站序列,并说明原因.(即写出以“S”表示进栈、以“X”表示出栈地栈操作序列).2. 设队列中有A、B、C、D、E这5个元素,其中队首元素为A.如果对这个队列重复执行下列4步操作:(1) 输出队首元素;(2) 把队首元素值插入到队尾;(3) 删除队首元素;(4) 再次删除队首元素.直到队列成为空队列为止,得到输出序列: (1) A、C、E、C、C (2) A、C、E

2、(3) A、C、E、C、C、C (4) A、C、E、C3. 给出栈地两种存储结构形式名称,在这两种栈地存储结构中如何判别栈空与栈满?4. 按照四则运算加、减、乘、除和幂运算()优先关系地惯例,画出对下列算术表达式求值时操作数栈和运算符栈地变化过程: AB5. 试写一个算法,判断依次读入地一个以为结束符地字母序列,是否为形如序列1&序列2模式地字符序列.其中序列1和序列2中都不含字符&,且序列2是序列1地逆序列.例如,a+b&b+a是属该模式地字符序列,而+&则不是.6. 假设表达式由单字母变量和双目四则运算算符构成.试写一个算法,将一个通常书写形式且书写正确地表达式转换为逆波兰式.7. 假设以

3、带头结点地循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应地队列初始化、入队列和出队列地算法.8. 要求循环队列不损失一个空间全部都能得到利用, 设置一个标志域tag , 以tag为0或1来区分头尾指针相同时地队列状态地空与满,请编写与此结构相应地入队与出队算法.9. 简述以下算法地功能(其中栈和队列地元素类型均为int):(1)void proc_1(Stack S) int i, n, A255; n=0; while(!EmptyStack(S) n+; Pop(&S, &An); for(i=1; itop=-1表示栈空.判断栈S满:如果S-top=St

4、ack_Size-1表示栈满.(2) 链栈(top为栈顶指针,指向当前栈顶元素前面地头结点)判断栈空:如果top-next=NULL表示栈空.判断栈满:当系统没有可用空间时,申请不到空间存放要进栈地元素,此时栈满. 3 4照四则运算加、减、乘、除和幂运算地优先惯例,画出对下列表达式求值时操作数栈和运算符栈地变化过程:A-B*C/D+EF【解答】3 5写一个算法,判断依次读入地一个以为结束符地字母序列,是否形如序列1&序列2地字符序列.序列1和序列2中都不含&,且序列2是序列1 地逆序列.例如,a+b&b+a是属于该模式地字符序列,而1+3&3-1则不是.【解答】算法如下: int IsHuiW

5、en() Stack *S; Char ch,temp; InitStack(&S); Printf(“n请输入字符序列:”); Ch=getchar();While( ch!=&) /*序列1入栈*/ Push(&S,ch); ch=getchar();do /*判断序列2是否是序列1地逆序列*/ ch=getchar(); Pop(&S,&temp); if(ch!= temp) /*序列2不是序列1地逆序列*/ return(FALSE); printf(“nNO”); while(ch!= & !IsEmpty(&S)if(ch = = & IsEmpty(&S) return(TRU

6、E); printf(“nYES”); /*序列2是序列1地逆序列*/else return(FALSE); printf(“nNO”); /*IsHuiWen()*/3.8 要求循环队列不损失一个空间全部都能得到利用,设置一个标志tag,以tag为0或1来区分头尾指针相同时地队列状态地空与满,请编写与此相应地入队与出队算法.【解答】入队算法:int EnterQueue(SeqQueue *Q, QueueElementType x) /*将元素x入队*/ if(Q-front=Q-front & tag=1) /*队满*/ return(FALSE); if(Q-front=Q-front

7、 & tag=0) /*x入队前队空,x入队后重新设置标志*/ tag=1;Q-elememtQ-rear=x;Q-rear=(Q-rear+1)%MAXSIZE; /*设置队尾指针*/Return(TRUE); 出队算法: int DeleteQueue( SeqQueue *Q , QueueElementType *x) /*删除队头元素,用x返回其值*/if(Q-front=Q-rear & tag=0) /*队空*/ return(FALSE);*x=Q-elementQ-front;Q-front=(Q-front+1)%MAXSIZE; /*重新设置队头指针*/if(Q-fron

8、t=Q-rear) tag=0; /*队头元素出队后队列为空,重新设置标志域*/Return(TUUE); 编写求解Hanoi问题地算法,并给出三个盘子搬动时地递归调用过程.【解答】算法: void hanoi (int n ,char x, char y, char z) /*将塔座X上按直径由小到大且至上而下编号为1到n地n个圆盘按规则搬到塔座Z上,Y可用做辅助塔座*/ if(n = =1) move(x,1,z); else Hanoi(n-1,x,z,y); move(x, n, z); Hanoi(n-1, y,x,z); Hanoi(3,A,B,C)地递归调用过程:Hanoi(2,

9、A,C,B): Hanoi(1,A,B,C) move(A-C) 1号搬到C Move(A-B) 2号搬到B Hanoi(1,C,A,B) move(C-B) 1号搬到B Move(A-C) 3号搬到CHanoi(2,B,A,C) Hanoi(1,B,C,A) move(B-A) 1号搬到A Move(B-C) 2号搬到C Hanoi(1,A,B,C) move(A-C) 1号搬到C提示:第3章 限定性线性表 栈和队列习题1. 按图3.1(b)所示铁道(两侧铁道均为单向行驶道)进行车厢调度,回答: 如进站地车厢序列为123,则可能得到地出站车厢序列是什么? 123、213、132、231、32

10、1(312)如进站地车厢序列为123456,能否得到435612和135426地出站序列,并说明原因.(即写出以“S”表示进栈、以“X”表示出栈地栈操作序列).SXSS XSSX XXSX 或 S1X1S2S3X3S4S5X5X4X2S6X62. 设队列中有A、B、C、D、E这5个元素,其中队首元素为A.如果对这个队列重复执行下列4步操作:(1) 输出队首元素;(2) 把队首元素值插入到队尾;(3) 删除队首元素;(4) 再次删除队首元素.直到队列成为空队列为止,则是否可能得到输出序列:(1) A、C、E、C、C (2) A、C、E(3) A、C、E、C、C、C (4) A、C、E、C提示:

11、A、B、C、D、E (输出队首元素A) A、B、C、D、E、A (把队首元素A插入到队尾) B、C、D、E、A (删除队首元素A) C、D、E、A (再次删除队首元素B) C、D、E、A (输出队首元素C) C、D、E、A、C (把队首元素C插入到队尾) D、E、A、C (删除队首元素C) E、A、C (再次删除队首元素D)3. 给出栈地两种存储结构形式名称,在这两种栈地存储结构中如何判别栈空与栈满?4. 按照四则运算加、减、乘、除和幂运算()优先关系地惯例,画出对下列算术表达式求值时操作数栈和运算符栈地变化过程: AB5. 试写一个算法,判断依次读入地一个以为结束符地字母序列,是否为形如序列

12、1&序列2模式地字符序列.其中序列1和序列2中都不含字符&,且序列2是序列1地逆序列.例如,a+b&b+a是属该模式地字符序列,而+&则不是.提示:(1) 边读边入栈,直到&(2) 边读边出栈边比较,直到6. 假设表达式由单字母变量和双目四则运算算符构成.试写一个算法,将一个通常书写形式(中缀)且书写正确地表达式转换为逆波兰式(后缀).提示:例:中缀表达式:a+b 后缀表达式: ab+中缀表达式:a+bc 后缀表达式: abc+中缀表达式:a+bc-d 后缀表达式: abc+d-中缀表达式:a+bc-d/e 后缀表达式: abc+de/-中缀表达式:a+b(c-d)-e/f 后缀表达式: ab

13、cd-+ef/- 后缀表达式地计算过程:(简便)顺序扫描表达式,(1) 如果是操作数,直接入栈;(2) 如果是操作符op,则连续退栈两次,得操作数X, Y,计算X op Y,并将结果入栈. 如何将中缀表达式转换为后缀表达式?顺序扫描中缀表达式,(1)如果是操作数,直接输出;(2)如果是操作符op2,则与栈顶操作符op1比较:如果op2 op1,则op2入栈;如果op2 = op1,则脱括号;如果op2 op1,则输出op1;7. 假设以带头结点地循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应地队列初始化、入队列和出队列地算法.提示: 参P.56 P.70 先画

14、图.typedef LinkList CLQueue;int InitQueue(CLQueue * Q)int EnterQueue(CLQueue Q, QueueElementType x)int DeleteQueue(CLQueue Q, QueueElementType *x)8. 要求循环队列不损失一个空间全部都能得到利用, 设置一个标志域tag , 以tag为0或1来区分头尾指针相同时地队列状态地空与满,请编写与此结构相应地入队与出队算法.提示: 初始状态:front=0, rear=0, tag=0 队空条件:front=rear, tag=0 队满条件:front=rear

15、, tag=1 其它状态:front !=rear, tag=0(或1、2) 入队操作:(入队)if (front=rear) tag=1;(或直接tag=1) 出队操作:(出队)tag=0;问题:如何明确区分队空、队满、非空非满三种情况?9. 简述以下算法地功能(其中栈和队列地元素类型均为int):(1)void proc_1(Stack S) int i, n, A255; n=0; while(!EmptyStack(S) n+; Pop(&S, &An); for(i=1; i=n; i+) Push(&S, Ai);将栈S逆序.(2)void proc_2(Stack S, int

16、e) Stack T; int d;InitStack(&T); while(!EmptyStack(S) Pop(&S, &d); if (d!=e) Push( &T, d); while(!EmptyStack(T) Pop(&T, &d); Push( &S, d); 删除栈S中所有等于e地元素.(3)void proc_3(Queue *Q) Stack S; int d;InitStack(&S); while(!EmptyQueue(*Q) DeleteQueue(Q, &d);Push( &S, d); while(!EmptyStack(S) Pop(&S, &d); Ent

17、erQueue(Q,d) 将队列Q逆序.实习题1 回文判断.称正读与反读都相同地字符序列为“回文”序列.试写一个算法,判断依次读入地一个以为结束符地字母序列,是否为形如序列1&序列2模式地字符序列.其中序列1和序列2中都不含字符&,且序列2是序列1地逆序列.例如,a+b&b+a是属该模式地字符序列,而+&则不是.2 停车场管理.设停车场是一个可停放n辆车地狭长通道,且只有一个大门可供汽车进出.在停车场内,汽车按到达地先后次序,由北向南依次排列(假设大门在最南端).若车场内已停满n辆车,则后来地汽车需在门外地便道上等候,当有车开走时,便道上地第一辆车即可开入.当停车场内某辆车要离开时,在它之后进

18、入地车辆必须先退出车场为它让路,待该辆车开出大门后,其它车辆再按原次序返回车场.每辆车离开停车场时,应按其停留时间地长短交费(在便道上停留地时间不收费).试编写程序,模拟上述管理过程.要求以顺序栈模 拟停车场,以链队列模拟便道.从终端读入汽车到达或离去地数据,每组数据包括三项:是“到达”还是“离去”;汽车牌照号码;“到达”或“离去”地时 刻.与每组输入信息相应地输出信息为:如果是到达地车辆,则输出其在停车场中或便道上地位置;如果是离去地车辆,则输出其在停车场中停留地时间和应交地费 用.(提示:需另设一个栈,临时停放为让路而从车场退出地车.)3 商品货架管理.商品货架可以看成一个栈,栈顶商品地生

19、产日期最早,栈底商品地生产日期最近.上货时,需要倒货架,以保证生产日期较近地商品在较下地位置.用队列和栈作为周转,实现上述管理过程.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何

20、内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not i

21、nfringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地

22、合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1