C语言 括号是否匹配。

来源:百度知道 编辑:UC知道 时间:2024/05/24 00:40:45
:通常在程序调试时都有对源代码编译的过程,而对左右括号是否匹配也是编译过程中的一个重要环节,试设计一个程序对任意输入的语句或数学表达式,判断其左右括号是否匹配。
各位大虾大侠帮帮忙啊
希望能编译通过哈

先按顺序取出所有的括号.然后循环删除_相邻的_差为一或二的_点.最后如果表空则匹配.
单向链表:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN 80
typedef struct list{
char node;
struct list* next;
}list,*plist;

void iniList(plist);
int isEmpty(plist);
int listAppend(plist,char);
int delBracketsFormList(plist);

int main(int argc,char* argv[]){
char test[LEN];
int i;
list a;
plist p;
p=&a;
iniList(p);
scanf("%80s",test);
for (i=0;i<LEN;i++){
switch(test[i]){
case '[': case']': case'{': case'}': case'(': case')':
listAppend(p,test[i]);
break;
default:continue;
}
}
delBracketsFormList(p);
if (isEmpty(p)){
printf("括号匹配!\n");
}
else
printf("括号不配对!\n");
return 0;
}