数据结构c语言编程栈

1、利用顺序栈的入栈、出栈、判断空栈的操作,实现表达式中左右括弧匹配检测;
2、算法基本思想
1)凡出现左括弧,则进栈;
2)凡出现右括弧,首先检查栈是否空?
若栈空,则表明该“右括弧”多余
否则和栈顶元素比较,
若相匹配,则“左括弧出栈”
否则表明不匹配
3)表达式检验结束时,
若栈空,则表明表达式中匹配正确
否则表明“左括弧”有余。

3、算法伪代码提示:
bool matching(char exp[], int n) {
// 检测长度为 n 的字符序列 exp 中的括弧是否匹配
int i = 0; mat = true; InitStack(S);
while ( i<n && mat ) {
switch of exp[i] {
case 左括弧:{ Push(S,exp[i]); i++; break; }
case ¢ ) ¢ : {
if (!StackEmpty(S) &&GetTop(S) ==¢(¢ )
{ Pop(S, e); i++; }
else {mat = false;}
break; } //case ¢)¢
… …
4、测试用例
至少测试以下字符串,并能正确返回判断结果
1)”if(var1<var2 && (3*(var1+var2)>1000)){var3=5;}”
2)”if(3+var1>10){var1=3.14*(var2/(var3+5))} else{if(3+var1>8){var1=3.14*(var3*(var2-5))} else{printf(“Done!\n”)}”

可以参考网上的一些实现
https://zhuanlan.zhihu.com/p/134675879