#include "stdio.h" #include "malloc.h" #include "process.h" #include "conio.h" #define N 100 typedef struct { char *base; char *top; }Stack; int Isleft(char ch) { return (ch == '(' || ch == '{' || ch == '[')?1:0; } int Isright(char ch) { return (ch == ')' || ch == '}' || ch == ']')?1:0; } int Match(char a,char b) { return ((a == '(' && b == ')') || (a == '[' && b == ']') || (a == '{' && b == '}'))?1:0; } void main() { Stack s; char str[N]; int i = 0; s.base = (char*)malloc(N*sizeof(char)); s.top = s.base; str[i] = getch(); while(str[i] != 13)//是13(回車)不是10(換行) { if(Isleft(str[i]) || Isright(str[i])) { printf("%c",str[i]); if(Isleft(str[i])) { *s.top++ = str[i]; } if(Isright(str[i])) { if(!Match(*--s.top,str[i])) { printf("\ncan not match\n"); exit(0); } } } str[++i] = getch(); } if(s.top == s.base) printf("nmatch\n"); }