C实例---括号匹配(栈实现)
2017-02-09 16:00
411 查看
代码:
运行结果:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define STACKSIZE 100 typedef char ElemType; typedef struct stack { ElemType *base; ElemType *top; int stacksize; }SeqStack; void InitialStack(SeqStack *Stack) { if ((Stack->base = (ElemType *)malloc(STACKSIZE * sizeof(ElemType))) == NULL) { printf("Line %d : Stack malloc error!\n",__LINE__); exit(1); } Stack->top = Stack->base; Stack->stacksize = STACKSIZE; } int IsEmpty(SeqStack *Stack) { if (Stack->top == Stack->base) return 1; else return 0; } int IsFull(SeqStack *Stack) { if ((Stack->top - Stack->base) == (STACKSIZE - 1)) return 1; else return 0; } void Push(SeqStack *Stack, ElemType data) { if (IsFull(Stack)) { printf("Line %d : Stack Overflow!\n",__LINE__); exit(2); } *(Stack->top ++) = data; } void Pop(SeqStack *Stack) { if (IsEmpty(Stack)) { printf("Line %d : Stack overflow!\n",__LINE__); exit(3); } -- Stack->top; } ElemType Top (SeqStack *Stack) { if (IsEmpty(Stack)) { printf("Line %d : Stack is empty!\n",__LINE__); exit(4); } return *(Stack->top - 1); } int Match(SeqStack *Stack, char *str) { char x; int i, flag = 1; for (i = 0; str[i] != '\0'; i ++) { switch (str[i]) { case '(': Push(Stack, '('); break; case '[': Push(Stack, '['); break; case '{': Push(Stack, '{'); break; case ')': x = Top(Stack); Pop(Stack); if (x != '(') flag = 0; break; case ']': x = Top(Stack); Pop(Stack); if (x != '[') flag = 0; break; case '}': x = Top(Stack); Pop(Stack); if (x != '{') flag = 0; break; default: break; } } if (IsEmpty(Stack) == 1 && flag) return 1; else return 0; } int main() { SeqStack *Stack; char *stt = "(16*32) - {[(x-1)]}"; printf("String : %s\n",stt); InitialStack(Stack); if (Match(Stack, stt)) printf("Matching\n"); else printf("No Matching\n"); return 0; }
运行结果:
相关文章推荐
- 一个动态的栈实现的括号匹配程序
- 栈的C++实现及用于括号匹配
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- 利用栈实现括号匹配算法!
- STL实现括号匹配
- 括号匹配问题 栈的应用 C语言实现
- 实现所有括号的合法匹配
- 括号匹配(栈实现)
- 括号匹配(栈实现)
- 15数组实现顺序堆栈的括号匹配问题
- 栈的顺序实现以及括号匹配判断程序
- 用栈实现括号匹配的检验
- 栈的链表实现,以及编译原理中的括号匹配
- 括号匹配(栈实现)
- 链栈实现括号匹配
- 数据结构课程设计:括号匹配问题(实现检验匹配并输出不匹配的位置)
- 栈的实现和括号匹配
- 数据结构的应用——使用栈实现字符串括号匹配检查
- 用栈来实现括号匹配之优酷笔试题
- 用栈实现括号匹配的检验