数据结构课后习题3.doc_第1页
数据结构课后习题3.doc_第2页
数据结构课后习题3.doc_第3页
数据结构课后习题3.doc_第4页
数据结构课后习题3.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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.IOIIOIOO 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(in & match)if(ai=I)Push(s,ai);else if(ai=O)if(GetTop(s,e)if(e!=I)match=false;elsePop(s,e);elsematch=false;i+;if(!StackEmpty(s) match=false;Destroy(s);return match;3.3 假设表达式中允许包含3种括号:圆括号、方括号和大括号。编写一个算法判断表达式中的括号是否正确配对运行结果:核心源代码:bool Match(char exp,int n)int i=0; char e;bool match=true;LiStack *st;InitStack(st);while(i2 ) /利用ASCII的值判断match=false;elsePop(st,e);elsematch=false;i+;if(!StackEmpty(st)match=false;DestroyStack(st);return match;3.4 设从键盘输入一整数序列a1,a2,.an,试编程实现:当ai0时,ai进队,当ai0时,将队首元素出队,当ai=0时,表示输入结束。要求将队列处理成环形队列,入队和出队操作单独编写算法,并在异常情况时(如队满)打印出错。运行结果:源代码:#include#include#include#define MAXSIZE 3typedef int ElemType;typedef structElemType dataMAXSIZE;int front,rear;Queue;void InitQueue(Queue *&s) s=(Queue*)malloc(sizeof(Queue);s-front=s-rear=0;void DestroyQueue(Queue *&s)free(s);bool QueueEmpty(Queue *q)return (q-front=q-rear);bool enQueue(Queue *&q,ElemType e)if(q-rear+1)%MAXSIZE=q-front)return false;q-rear=(q-rear+1)%MAXSIZE;q-dataq-rear=e;/printf(rear=%d ,q-rear);return true;bool deQueue(Queue *&s,ElemType &e)if(s-front=s-rear)return false ; 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;printf(%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,&a);if(a0)if(!enQueue(s,a)printf(错误!队满了n);elseprintf(进队成功!n);if(a=0)break;if(a0)if(!deQueue(s,j)printf(错误!队空了n);elseprintf(出队成功n); DisplayQue

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论