首页 > 编程知识 正文

括号匹配问题 栈c语言(C语言括号匹配)

时间:2023-05-03 23:57:14 阅读:77162 作者:67

总体思路:最里面的左括号和最右边同类型的右括号始终是一对,从最左边的左括号开始依次与两侧的括号进行比较,以实现括号的一致

学习数据结构的学生应该很熟悉,这可以通过(先用高级堆栈元素进行堆栈)的数据结构轻松达到目的。 当然其他方式也可以。 这里主要介绍如何使用堆栈完成括号匹配

/*以下是Bracket1函数,可以处理三种类型的括号匹配: 请补充完整程序*///堆栈的相关方法。 文章末尾的intbracket1(char*str ) (/*以下为正确的程序段(*/Sqstack S; int a; Init堆栈(s; fgets(str,256,stdin ); //该函数最多用键盘输入256个字符,在str指定的字符串中存储intk=strlen(str )。 for(intI=0; i k; I ) {char ch=str[i]; 电子类型目标; 开关(ch (ch ) case ) ) :case ) ) :a=ch; 推送(s,a ); 布雷克; case ' ) ' :pop(s,target ); if (目标!=' ' ) {//printf ('匹配失败! 字符串中没有%d位置%c的另一半。' 、I、ch; 返回0; }break; case'}':pop(s,target ); if (目标!='{ ' ) {//printf ('匹配失败! 字符串中没有%d位置%c的另一半。' 、I、ch; 返回0; }break; case']':pop(s,target; if (目标!='[']{//printf ('匹配失败! 字符串中没有%d位置%c的另一半。' 、I、ch; 返回0; }break; }returnstackempty(s; /*完成填写*/}堆栈顺序存储方式(数组安装)的动态结构:

类型def int elemtype; 类型结构化堆栈{ int maxsize; //堆栈最大容量,ElemType *data; int top; //top指针失踪并指向堆栈data的顶部}Sqstack; 堆栈顺序存储方式的静态结构:

类型def int elemtype; 类型结构化堆栈{ int maxsize; ElemType data[maxSize]; int top; //top指针失踪并指向数组data的顶部}Sqstack; 堆栈的链存储结构

类型def int elemtype; typedefstructstack {结构堆栈* next; //指向下一节点的指针ElemType data; //使用链存储结构时,标头节点将指向堆栈顶部的指针}链接堆栈; 此处使用的相关方法(顺序存储结构示例) :

intpush(sqstack*L,ElemType *e )/*元素) e )已进入堆栈,并且堆栈成功。 函数返回1 )/{/*以下内容并插入正确的代码(/if(L-top==L-maxsize ) ) intk=size l-data=realloc (l-data,2*k*L-maxSize ) //过元素溢出时,使堆栈容量加倍的L-maxSize=2*L-maxSize; }L-data[L-top]=*e; 低顶; /*代码插入结束* /返回1; }intpop(sqstack*L,ElemType *e ) )决定从堆栈中挤出元素,返回到(e中,1 )/)以下,然后插入正确的代码(/if ) L-top==0) n '; 返回0; }*e=L-data[--L-top]; /*代码插入结束* /返回1; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。