极客 - 博文20 - 符号平衡问题
来源:互联网 发布:网络打字员工作 编辑:程序博客网 时间:2024/06/05 15:17
*程序名称: 符号平衡问题
*作者: 田鑫
*完成日期: 2016 - 09 - 25
*版本号: v1.0
*平台: DEV C++
*问题描述: 检测输入的符号是否匹配
*解决方法: 利用堆栈实现
*作者: 田鑫
*完成日期: 2016 - 09 - 25
*版本号: v1.0
*平台: DEV C++
*问题描述: 检测输入的符号是否匹配
*解决方法: 利用堆栈实现
#include <stdio.h>#include <stdlib.h>struct stack{ char character; struct stack *next;};typedef struct stack STACK, *PSTACK;int checkSymbol(PSTACK s);/*平衡符号匹配检测*/PSTACK createStack(void);/*创建空栈*/int isEmpty(PSTACK s);/*测试栈是否是空栈*/void push(PSTACK s, char ch); /*元素入栈*/void pop(PSTACK s);/*元素出栈*/char top(PSTACK s);/*获取栈顶元素*/void freeStack(PSTACK s);/*释放栈元素*/int main(void){ PSTACK s = NULL; s = createStack();printf("\t\t符号匹配状态\n"); if(checkSymbol(s)){printf("\t\t---NO!---\n");} else{ printf("\t\t---Yes!---\n");} freeStack(s);/*调用完成清空栈所有元素*/ return 0;}int checkSymbol(PSTACK s){ char ch; while((ch = getchar()) != '\n')/*从文件读取数据, #为文件尾*/ { if((ch == '{')||(ch == '[')||(ch == '(')) /*如果是左括号,压栈*/ { push(s, ch); } else if((ch == '}')||(ch == ']')||(ch == ')'))/*符号匹配*/ { if(isEmpty(s))return 1; else { switch(ch) {case '}':if(top(s)!='{')/*匹配失败*/{return 1;}elsebreak;case ')':if(top(s)!='('){return 1;}elsebreak;case ']':if(top(s)!='['){return 1;}else break; } pop(s);/*匹配成功 删除符号*/ } } } if(!isEmpty(s))/*栈里如果还有字符,则符号未匹配完*/return 1; else return 0;}PSTACK createStack(void){ PSTACK s; s = (PSTACK)malloc(sizeof(STACK)); if(s == NULL){ printf("内存分配失败!\n");exit(0);} s->next = NULL; return s;}int isEmpty(PSTACK s){ return (s->next==NULL);}void push(PSTACK s, char ch){ PSTACK temp = (PSTACK)malloc(sizeof(STACK));temp->next = NULL; if(!temp){printf("内存分配失败!");exit(0);} temp->character = ch; temp->next = s->next; s->next = temp;}void pop(PSTACK s){ PSTACK temp = NULL; if(isEmpty(s)) {printf("栈空!\n");} else { temp=s->next; s->next=temp->next; free(temp); }}char top(PSTACK s){ if(!isEmpty(s)){ return (s->next->character);} printf("empty stack."); return 0;}void freeStack(PSTACK s){PSTACK temp;while(s != NULL){temp = s;s = s->next;free(temp);}}
运行结果
1 0
- 极客 - 博文20 - 符号平衡问题
- 基于栈的平衡符号匹配问题
- 栈的应用:平衡符号问题
- 栈的应用 - 符号平衡问题
- 平衡符号
- 一道算法题——符号平衡问题
- 极客 - 博文29 - AVL树的平衡问题
- 栈的应用---平衡符号
- 栈的应用--平衡符号
- 栈的应用---平衡符号
- 栈应用—平衡符号
- 栈的应用----平衡符号
- 栈的应用之平衡符号
- 栈的应用-平衡符号(C版)
- 栈的应用——平衡符号
- 平衡符号(栈应用一)
- 栈的应用 — 平衡符号
- 栈的应用---平衡符号的检测
- 阿拉丁阿拉蕾
- psql: FATAL: role “username” does not exist
- equals方法相等测试与集成
- 最长回文字符串 manacher算法
- 关于map
- 极客 - 博文20 - 符号平衡问题
- 浅析java多线程之java的内存模型(锁机制前传)
- scripts/kconfig/lxdialog/dialog.h:26:20: fatal error: curses.h: No such file or directory
- Hadoop-01-01 伪分布式环境搭建
- Humble Numbers
- 第一次面试总结--中国电子科学研究院
- JavaScript中的匿名函数及函数的闭包
- Hadoop-02-01 HDFS
- 安装wampserver时显示计算机丢失MSVCR110.dll