收藏 分享(赏)

数据结构课后习题3.doc

上传人:saw518 文档编号:6622391 上传时间:2019-04-18 格式:DOC 页数:7 大小:95.50KB
下载 相关 举报
数据结构课后习题3.doc_第1页
第1页 / 共7页
数据结构课后习题3.doc_第2页
第2页 / 共7页
数据结构课后习题3.doc_第3页
第3页 / 共7页
数据结构课后习题3.doc_第4页
第4页 / 共7页
数据结构课后习题3.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、3.1 有 5 个元素,其进栈次序为:A 、B 、C 、D、E,在各种可能的出栈次序中,以元素C、D 最先出栈(即 C 第一个且 D 第二个出栈)的次序有哪几个?(1)B 出栈,A 出栈,E 进栈,E 出栈,输出序列为 CDBAE;(2)B 出栈,E 进栈,E 出栈,A 出栈,输出序列为 CDBEA;(3)E 进栈,E 出栈,B 出栈,A 出栈,输出序列为 CDEBA。所以可能的次序有:CDBAE、CDBEA、CDEBA。3.2 假设以 I 和 O 分别表示进栈和出栈操作,栈的初态和终栈均为空,进栈和出栈的操作序列可表示为仅由 I 和 O 组成的序列。(1)下面所示的序列中哪些是合法的?A.I

2、OIIOIOO B.IOOIOIIO C.IIIOIOIO D.IIIOOIOO(2)通过对(1)的分析,写出一个算法判定所给的操作序列是否合法。若合法返回 1;否则返回 0。 (假设被判定的操作序列已存入一维数组中) 。1) A、D 均合法2)运行结果:核心代码:bool Judge(char a,int n)LiStack *s;InitStack(s);int i=0;char e;bool match=true;while(i2 ) /利用 ASCII 的值判断match=false;elsePop(st,e);elsematch=false;i+;if(!StackEmpty(st)

3、match=false;DestroyStack(st);return match;3.4 设从键盘输入一整数序列 a1,a2,.an,试编程实现:当 ai0时,ai 进队,当 ai#include#include#define MAXSIZE 3typedef int ElemType;typedef structElemType dataMAXSIZE;int front,rear;Queue;void InitQueue(Queue *s-front=s-rear=0;void DestroyQueue(Queue *bool QueueEmpty(Queue *q)return (q-

4、front=q-rear);bool enQueue(Queue *q-rear=(q-rear+1)%MAXSIZE;q-dataq-rear=e;/ printf(“rear=%d “,q-rear);return true;bool deQueue(Queue *s-front=(s-front+1)%MAXSIZE;e=s-datas-front;/ printf(“front=%d“,s-front);return true;void DisplayQueue(Queue *s)while(s-front!=s-rear)s-front=(s-front+1)%MAXSIZE;pri

5、ntf(“%d “,s-datas-front);int main()int a;int n,i=0,j=0;Queue *s;InitQueue(s);while(1)a=0;printf(“请输入一个整数 “);scanf(“%d“,if(a0)if(!enQueue(s,a)printf(“错误!队满了 n“);elseprintf(“进队成功! n“);if(a=0)break;if(a0)if(!deQueue(s,j)printf(“错误!队空了 n“);elseprintf(“出队成功 n“);DisplayQueue(s);return 0;3.6 输入 n(由用户输入)个 10 以内的数,每输入 i(0i 9) ,就把它插入到第 i 号队列中。最后把 10 个队中非空队列,按队列号从小到大的顺序串接成一条链,并输出该链的所有元素。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报