堆栈--括号匹配检验
来源:互联网 发布:数据录入员招聘 编辑:程序博客网 时间:2024/05/16 16:08
根据堆栈LIFO原理,对括号的匹配进行检验:
#include<stdio.h>#include<stdlib.h>#define STACK_SIZE 1024#define TYPE chartypedef struct {TYPE *base;TYPE *top;int stack_size;}STACK;int stack_init(STACK *s){s->base = malloc(STACK_SIZE * sizeof(TYPE));if (s->base == NULL){return -1;}s->top = s->base;s->stack_size = STACK_SIZE;return 0;}void stack_destroy(STACK *s){free(s->base);s->base = s->top = NULL;s->stack_size = 0;}void stack_clear(STACK *s){s->top = s->base;}int stack_length(STACK *s){return (s->top - s->base);}int stack_empty(STACK *s){return (s->top == s->base);}TYPE stack_top(STACK *s, TYPE *e){if (stack_length(s) == 0){return -1;}*e = *(s->top - 1);return *e;}int stack_push(STACK *s, TYPE e){if (stack_length(s) >= s->stack_size){return -1;}*(s->top++) = e;return 0;}int stack_pop(STACK *s, TYPE *e){if (stack_length(s) == 0){return -1;}*e = *(--s->top);return 0;}int main(){STACK *s;char symbol, elem;FILE *fd;fd = fopen("symbol", "r");if (fd == NULL){return -1;}s = (STACK *)malloc(sizeof(STACK));if (s == NULL){return -1;}stack_init(s);while(fread(&symbol, sizeof(symbol), 1, fd) == 1){if (stack_empty(s)){if (symbol == '('|| symbol == '['|| symbol == '{'){stack_push(s, symbol);}}else{if ((symbol - stack_top(s, &elem) == 1) || (symbol - stack_top(s, &elem) == 2)|| (symbol - stack_top(s, &elem) == 2)){stack_pop(s, &symbol);}else{if (symbol == '('|| symbol == '{'|| symbol == '['){stack_push(s, symbol);}}}}if (stack_empty(s)){printf("correct symbol\n");}else{printf("wrong symbol\n");}return 0;}
- 堆栈--括号匹配检验
- 括号匹配的检验
- 括号的匹配检验
- 括号匹配的检验
- 括号匹配的检验
- 括号匹配检验
- 括号匹配的检验
- 8586 括号匹配检验
- 括号匹配检验 c++
- 括号匹配检验
- 括号匹配的检验
- 括号匹配的检验
- 括号匹配的检验
- 括号匹配的检验
- 数据结构--括号匹配检验
- fjnu 1738 括号匹配检验
- 括号匹配的检验程序
- 括号匹配检验 数据结构运用
- 嵌入式根文件系统的移植和制作详解
- JAVA面向对象下
- 测试基础---测试用例01
- ultreaedit 字符串替换
- 连接ACCESS数据库
- 堆栈--括号匹配检验
- POJ-3295-Tautology
- 测试管理014:不好的测试实践 - 测试的尽早介入
- 放弃给某些同学一厢情愿的大学布道
- Direct3D渲染管线简介
- UVA 11995
- java流的分布图
- 中软国际笔试题
- MFC操作——添加音频文件