#include <stdio.h> #include <string.h> #define MAXSIZE 110 #define TRUE 1 #define FALSE 0 typedef char ElemType; typedef int Status; typedef struct { ElemType data[MAXSIZE]; int top; }SeqStack; void InitStack(SeqStack *s) { (*s).top = 0; } Status StackEmpty(SeqStack s) { if(s.top==0) return 0; return 1; } void Push(SeqStack *s, char ch) { (*s).data[(*s).top]=ch; (*s).top++; } Status Pop(SeqStack *s, char ch) { if(!StackEmpty(*s)) return FALSE; (*s).top--; return TRUE; } int main() { char ch; int flag, k; SeqStack s; InitStack(&s); printf("请输入一个由[]、{}和()组成的字符串\n"); flag=k=1; while(scanf("%c", &ch), ch!='\n') { if((s.data[s.top-1]=='['&&ch==']')&&s.top>=1) { k=Pop(&s, ch); if(!k) flag=0; } else if(s.data[s.top-1]=='('&&ch==')' &&s.top>=1) { k=Pop(&s, ch); if(!k) flag=0; } else if(s.data[s.top-1]=='{'&&ch=='}' &&s.top>=1) { k=Pop(&s, ch); if(!k) flag=0; } else { Push(&s, ch); } } if(StackEmpty(s)) flag=0; if(flag) printf("该字符串括号完全匹配.\n"); else printf("该字符串括号不完全匹配.\n"); return 0; }