栈-括号匹配

xiaoxiao2021-02-27  433

//括号匹配 #include "stdio.h" #include "stdlib.h" #define MAXSIZE 100 typedef struct{ char *elem; int top; //栈顶指针 }SeqStack; void Init_SeqStack(SeqStack *s) { s->elem = (char*)malloc(sizeof(char)*MAXSIZE); s->top = -1; } int Empty_SeqStack(SeqStack *s) { if (s->top == -1){ return 0; } return 1; } int Push_SeqStack(SeqStack *s,char c) { if (s->top == MAXSIZE){ return -1; } s->elem[++s->top] = c; return 1; } int Pop_SeqStack(SeqStack *s,char *c) { if (s->top==-1){ *c = '#'; return -1; } *c = s->elem[s->top]; s->top = s->top-1; } main() { SeqStack s; int i=0,flag=0; char c,ch[100]; Init_SeqStack(&s); printf("输入括号"); scanf("%s",ch); while (ch[i]!='\0') { switch(ch[i]) { case '[': case '(': case '{': Push_SeqStack(&s,ch[i]); break; case ']': Pop_SeqStack(&s, &c); if (c != '['){ flag = 1; } break; case ')': Pop_SeqStack(&s, &c); if (c != '('){ flag = 1; } break; case '}': Pop_SeqStack(&s , &c); if (c != '{'){ flag = 1; } break; } if (flag){ printf("匹配失败"); break; } i++; } if(flag==0) { if (Empty_SeqStack(&s)==0) { printf("匹配成功"); } else printf("匹配失败"); } }
转载请注明原文地址: https://www.6miu.com/read-1928.html

最新回复(0)