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

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

栈 括号匹配问题

问题描述:

假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ }”,且这
三种括号可按任意的次序嵌套使用(如:…[…{… …[…]…]…[…]…(…)…)。编写判别给定表达式
中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。

解法:

栈 括号匹配问题(C语言)_第1张图片

   先定义一个char型的数组,空间大小根据实际情况定义
char arr[100];

输入字符串
开始循环,直到arr为空;

检测每一个字符,如果字符为’ ( ’ 、‘ { ’或者’ [ ’,将字符入栈;如果不是这三个字符,先获取栈顶元素,赋值给x(如下),如果栈顶元素为’ ( ’同时arr[i]为‘ ) ’或者栈顶元素为’ { ’同时arr[i]为‘ } ’或者栈顶元素为’ [ ’同时arr[i]为‘ ] ’,将栈顶元素出栈。

for(i = 0;arr[i]!='\0';i++){
   
        if(arr[i] == '('||arr[i] == '{'||arr[i] == '['){
   
            push(s,arr[i]);
           }
        top(s,&x);
        if((arr[i]==')'&&x == '(')||arr[i]=='}'&&x == '{'||arr[i]==']'&&x == '['){
   
            pop

你可能感兴趣的:(数据结构与算法,c语言,数据结构)