数据结构实验报告:括号匹配问题 1、实验内容:利用栈的基本操作,写一个 C程序实现检测表达式“ (a+b)*c-d+e+f ”中的括号是否匹配。实验目的:掌握栈的操作 提交内容:C语言源代码:#include <stdio.h>#include <string.h>#define MaxSize 100typedef char ElemType;typedef structElemType dataMaxSize;int top;SeqStack;int InitStack(SeqStack *s)s->top=-1;return 1;int Push(SeqStack *s,ElemType x) 2、if (s->top = MaxSize -1 )printf(“栈已满,不能入栈.n”);return 0;elses->top+;s->datas->top = x;return 1;int Pop(SeqStack *s,ElemType *x)if (s->top = -1)printf(“栈为空,不能出栈.n”);return 0;else*x=s->datas->top;s->top-;return 1;int GetTop(SeqStack *s,ElemType *x)if (s->top = -1)pr 3、intf(“栈为空,不能取值.n”);return 0;else*x=s->datas->top;return 1;int IsEmpty(SeqStack *s)if(s->top=-1)return 1;return 0;int Check(char str口,int len)int i;int a=1,b=0;ElemType x;SeqStack s;InitStack(&s);for(i=0;i<len;i+)if(stri=”)if(IsEmpty(&s)if(Push(&s,stri)!=1)a=0; b 4、reak;elseif(GetTop(&s,&x)!=1)a=0;break; if(x=” | x=” | x='(‘) a=0;break;elseif(Push(&s,stri)!=1) a=0;break;else if(stri=”)if(IsEmpty(&s)if(Push(&s,stri)!=1)a=0;break;elseif(GetTop(&s,&x)!=1)a=0;break;if(x=” II x='(‘)a=0; 5、break;elseif(Push(&s,stri)!=1) a=0;break;else if(stri='(‘)if(Push(&s,stri)!=1)a=0;break;b=1;else if(stri=’)’)if(Pop(&s,&x)!=1)a=0;break;if(x!='(‘)a=0;break;else if(stri=”)if(Pop(&s,&x)!=1)a=0;break;if(x!=”)a=0;break;if(b=0)a=0;break;else if(stri=”)if(Pop(&s,&x)!=1)a=0;break;if(x!=”)a=0;break;if(b=0)a=0;break;elsecontinue;if(!IsEmpty(&s)a=0;return a;int main()char strMaxSize;int i,len;printf(“输入字符由:n”);gets(str);len=strlen(str);if(Check(str,len)=0) printf(“匹配合法
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/31362.html