利用栈实现括号的匹配

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/11 03:07:03
利用栈实现括号的匹配

利用栈实现括号的匹配
利用栈实现括号的匹配

利用栈实现括号的匹配
现成代码,以前做的,你看看吧 # include # include #define OK 1 #define ERROR 0 //定义顺序堆栈 #define STACK_SIZE 100 #define STACK_INC 10 typedef char Elem; typedef struct{ Elem *base; Elem *top; int size; }SqStack; typedef int Status; Status CreatStack(SqStack &S) { S.base=(Elem *)malloc(STACK_SIZE*sizeof(Elem)); S.top=S.base; S.size=STACK_SIZE; return OK; } Status StackEmpty(SqStack S){ if(S.top!=S.base) return ERROR; return OK; } //进栈 Status Push(SqStack &S,Elem e){ if(S.top-S.base>=S.size){ S.base=(Elem *)realloc(S.base,(S.size+STACK_INC)*sizeof(Elem)); S.top=S.base+S.size; S.size+=STACK_INC; } *S.top=e; S.top+=1; return OK; } //出栈 Status Pop(SqStack &S,Elem &e){ if(S.top==S.base) return ERROR; S.top-=1; e=*S.top; return OK; } //括号匹配 Status Bracket(SqStack &S,char *str){ int i=0,flag1=0,flag2; Elem e; while(str[i]!='\0') { switch(str[i]) { case '(':Push(S,'(');break; //'('进栈 case '[':Push(S,'[');break; //'['进栈 case '{':Push(S,'{');break; //'{'进栈 case ')':{Pop(S,e); if(e!='(') flag1=1; break;} //出栈,判断是否为'(' case ']':{Pop(S,e); if(e!='[') flag1=1;break;} //出栈,判断是否为'[' case '}':{Pop(S,e); if(e!='{') flag1=1;break;} //出栈,判断是否为'{' default:printf("你输入的不是有效的符号!"); return 0; } if(flag1) break; //出现不匹配,立即结束循环 i++; } flag2=StackEmpty(S); //flag2判断堆栈是否为空 if(!flag1 && flag2) printf("\n你输入括号匹配!\n"); else printf("\n你输入的括号不匹配!\n"); return OK; } //主函数 void main() { int i; do{ printf("\n括号匹配校验:\n"); printf("1 进入\n"); printf("0 退出\n"); printf("请输入你的选择:"); scanf("%d",&i); switch(i) { case 1:char str[255]; SqStack S; int temp; printf("\n请输入要验证的括号序列:\n"); scanf("%s",str); scanf("%c",&temp); CreatStack(S); Bracket(S,str); printf("\n"); break; default:printf("\n你的输入无效!\n"); } } while(i!=0); }

利用栈实现括号的匹配 求高手用栈的操作实现”括号匹配检验“这个程序,用数据结构的知识.谢谢啦! 检验括号匹配,用到栈的知识 数据结构(C) 请用类C语言实现括号匹配的检验这个算法 检验括号匹配的算法 写一个算法,借助栈进行括号的匹配校验 c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正 求匹配变压器原理及电路!实现最大功率传输的条件是负载电阻RL必须与电源电阻RS相匹配,但在大多数条件下,二者是不匹配的,而且两者都是固定的,不能改变.可以利用铁心变压器实现负载阻抗 括号匹配问题 数据结构括号匹配问题? matlab括号匹配 求用C语言做简单的括号匹配程序 用C++语言栈的形式求n!的阶乘以及用栈完成括号匹配检验程序 输入一行表达式,判断该表达式中的括号是否匹配.括号要求符合C++表达式的要求.若左括号与右括号匹配,则 中译英 一小段 其中,基于区域的匹配算法是以区域的相似性作为匹配基元,立体视觉基于区域的视差搜索算法一个重要缺点是计算量大,我们要对算法进行研究,找出更好的算法并优化实现,利用 如何实现土地的节约集约利用 C语言 给定的表达式中左右括号数量是否匹配C语言编程 判断给定的表达式中左右括号数量是否匹配 pascal括号匹配检查的程序,用栈的(最好有解释)一个只由大括号{},中括号[],小括号()组成的字符串,其嵌套次序只能是:大括号可以嵌套中小括号,中括号可以嵌套小括号.现给出n个这样的