栈实现括号匹配
来源:互联网 发布:整人剃发软件 编辑:程序博客网 时间:2024/05/17 09:17
# include <stdio.h># include <malloc.h># include <stdlib.h># define INIT_STACK_SIZE 10# define STACKINCREMENT 5typedef struct{char * base;char * top;int stacksize;}* PSTACK, STACK;void Init (PSTACK pS){pS->base = (char *)malloc(sizeof(char) * INIT_STACK_SIZE);if (!pS->base){printf("内存分配失败!\n");exit(-1);}pS->top = pS->base;pS->stacksize = INIT_STACK_SIZE;return;}void push (PSTACK pS){return;}int match (char ch, char cha){if ((')' == ch && '(' == cha) || (']' == ch && '[' == cha) || ('}' == ch && '{' == cha)){return 1;}else if ('(' == ch ||'[' == ch || '{' == ch || ')' == ch ||']' == ch || '}' == ch){return 2;}return 0;}void push (PSTACK pS, char ch){if ((pS->top - pS->base) == pS->stacksize - 1){pS->base = (char *)realloc(pS->base, sizeof(char) * (pS->stacksize + STACKINCREMENT));if (!pS->base){printf("内存分配失败!\n");exit(-1);}pS->top = pS->base + (pS->stacksize - 1);pS->stacksize += STACKINCREMENT;}*pS->top++ = ch;return;}void pop (PSTACK pS){*(--pS->top) = NULL;return;}int main(void){char ch;STACK s;Init(&s);printf("请输入括号串:");do {ch = getchar();if (1 == match(ch, *(s.top - 1))){pop(&s);}else if (2 == match(ch, *(s.top - 1))){push(&s, ch);}else if (ch == '\n'){printf("\n输入完成!\n");if (s.top == s.base){printf("****匹配成功!****\n");}else{printf("****匹配失败!有%d项不能互相匹配!****\n", s.top - s.base);}break;}} while ('\n' != ch);return 0;}
0 0
- 栈实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- 括号匹配---栈实现
- 栈实现括号匹配
- 栈实现括号匹配
- 括号匹配,栈实现
- 栈实现括号匹配
- 链栈实现括号匹配
- 括号匹配(栈实现)
- 用栈实现括号匹配
- 括号匹配问题--栈实现
- 栈的实现-括号匹配
- java栈实现括号匹配
- 括号匹配(链栈实现)
- 括号匹配--顺序栈实现
- 用栈实现括号匹配
- Jtable 排序,清空的问题
- HTML5学习笔记简明版(1):HTML5介绍与语法
- Beyond Compare软件使用问题
- vs2012连接sql2008(错误类型:Could not load file or assembly)
- HTML5学习笔记简明版(2):新元素之section,article,aside
- 栈实现括号匹配
- java enum(枚举)使用详解 + 总结
- quantity和amount在nopCommerce的Dashboard中的含义!
- 使用DOM解析XML(一)
- S3C6410移植u-boot-2013.01
- HTML5学习笔记简明版(3):新元素之hgroup,header,footer,address,nav
- android Http网络通信方式总结
- (关于编程实现数据的转换)说说 java与c语言的不同之处!!
- Hadoop RPC 源码阅读3