允许任何时候出栈,能否得到下列的每个出栈序列,若.ppt

允许任何时候出栈,能否得到下列的每个出栈序列,若.ppt

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

练习1:有6个元素A、B、C、D、F依次入栈,允许任何时候出栈,能否得到下列的每个出栈序列,若能,给出栈操作的过程,若不能,说明理由。 1) CDBEFA 2) ABEDFC 3) DCEABF 4) BAEFCD 练习2:设计一个算法,用来检查一个C/C++语言程序(文件)中的{}、[]、( )是否配对,若能全部配对,返回1,否则,返回0。 定义一个顺序栈: struct StackSq { ElemType stack[MaxSize]; int top; }; int BracketsCheck(char *fname) { //对由fname所指文件程序进行括号配对检查 struct StackSq a; char ch; FILE *fp; fp=fopen(fname,”r”); if (!fp) exit(1); InitStack(a); ch=fgetc(fp); while(ch!=EOF) { switch(ch) { case ‘{‘: case ‘[‘: case ‘(‘: Push(a,ch); break; case ‘}’: if (Peek(a)==‘{‘) Pop(a); else return 0; break; case ‘]’: if (Peek(a)==‘[‘) Pop(a); else return 0; break; case ‘(‘: if (Peek(a)=‘(‘) Pop(a); else return 0; } ch=fgetc(fp); } //end of while if (EmptyStack(a)) retrun 1; else return 0; fclose(fp); } 作业3: 设计一个算法,判定一个字符串是否是对称字符串。若是,返回1,否则,返回0。 思路:将长度为n的字符串exps的前半部分(exps[0]~exps[n/2])进栈。将exps[(len+1)/2]~exps[len-1]的字符依次与出栈的元素比较,不相同时返回0;若比较完毕且栈为空,则返回1。 typedef char ElemType; int fun(char *exps) { char x; int len,I,same=1; LinkStack *ls; InitStack(ls); for(len=0;exps[len]!=‘\0’;len++); for(i=0;i<len/2;i++) Push(ls,exps[i]); for(i=(len+1)/2;i<len;i++) { Pop(ls,x) if (x!=exps[i]) { same=0; break;} } if (StackEmpty(ls) && same==1) return 1; else return 0; } // end of fun() 作业: 1、循环队列的优点是什么,如何判别队空和队满? 2、对于循环队列,写出求队列中元素个数的公式。 元素个数= 0 队空,即front=rear rear-front rear>front rear+QueueSize-front rear<front QueueSize-1 队满,即(rear+1)%QueueSize==front 归纳为: (rear+QueueSize-front)%QueueSize 作业: 采用顺序存储结构,编写一个实现串大小比较运算 strcmp(s,t) ,分别返回 1,0,-1。 思想: 先比较公共部分 再看谁长谁短 int strcmp(char *s,char *t) { int i; for(i=0;(s[i]!='\0') && (t[i]!='\

文档评论(0)

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

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

1亿VIP精品文档

相关文档