C语言数据结构之栈与队列的应用(2)
来源:互联网 发布:nba2k17麦迪身体数据 编辑:程序博客网 时间:2024/06/04 19:34
输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。
#include<stdio.h>#include<stdlib.h>#define MAX 20#define STACKINCREMENT 10typedef struct{char *base;char *top;int stacksize;}SqStack;void InitStack(SqStack &s){//构造空栈s.base=(char *)malloc(MAX *sizeof(char));if(!s.base)exit(0);s.top=s.base;s.stacksize=MAX;}void Push(SqStack &s,int e){if(s.top-s.base>=s.stacksize){s.base=(char *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(char));if(!s.base)exit(0);s.top=s.base+s.stacksize;s.stacksize+=STACKINCREMENT;}*s.top++=e;}void Pop(SqStack &s,int &e){if(s.top==s.base)exit(0);e=*--s.top;}int stackEmpty(SqStack s){if(s.top==s.base)return 1;return 0;}int AllBracket(char*str){SqStack s;char *p;int ch;InitStack(s);p=str;while(*p!='\0'){if(*p=='('||*p=='['||*p=='{')Push(s,*p);else if(*p==')'||*p==']'||*p=='}'){if(stackEmpty(s)){printf("不匹配\n");return 0;}Pop(s,ch);if(*p==')'&&ch!='('){printf("不匹配\n");return 0;}if(*p==']'&&ch!='['){printf("不匹配\n");return 0;}if(*p=='}'&&ch!='{'){printf("不匹配\n");return 0;}}p++;}if(stackEmpty(s)){printf("匹配\n");return 1;}return 0;}int main(){char str[80];printf("请输入表达式:");gets(str);AllBracket(str);return 0;}
1 0
- C语言数据结构之栈与队列的应用(2)
- C语言数据结构之栈与队列的应用(1)进制转换
- C语言数据结构之栈与队列的应用(3)
- 数据结构之队列的实现(c语言)
- 数据结构中栈与队列的c语言代码实现
- 数据结构之顺序队列的操作(C语言)
- 数据结构之顺序队列的操作(C语言)
- 数据结构之队列(C语言)
- 数据结构之 队列(C语言实现)
- 数制转换器(c语言编写,应用数据结构的栈和队列)
- C语言数据结构之-队列
- C语言数据结构之队列
- 数据结构---C语言之队列的链式表示和实现(链队列)
- 数据结构---C语言之队列的顺序表示和实现(循环队列)
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- 算法与数据结构-队列的基本操作C语言实现
- 循环队列的应用——舞伴配对问题(数据结构 C语言)
- 【数据结构】数据结构C语言的实现(队列)
- 快快快!27个提升效率的iOS开源库推荐
- 查看CentOS版本方法
- maven向本土仓库导入jar包(处理官网没有的jar包)
- Object-C系列-<present and dismiss>
- ArrayDeque利用数组建造的双向队列
- C语言数据结构之栈与队列的应用(2)
- Android使用Volley请求网络
- 快快快!27个提升效率的iOS开源库推荐
- 获取前一天Tomcat的异常日志
- 为AndroidStudio安装jd-intellij,反编译任意.jar .class
- Java下的Cookie和Session
- 一个公司的 CTO 究竟要做什么?
- java多线程基础
- HDOJ 5533 Dancing Stars on Me (判断点是否能组成正多边形)