数据结构实验之栈与队列四:括号匹配
来源:互联网 发布:驱蚊子软件 编辑:程序博客网 时间:2024/06/15 05:17
数据结构实验之栈与队列四:括号匹配
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
Input
输入数据有多组,处理到文件结束。
Output
如果匹配就输出“yes”,不匹配输出“no”
Example Input
sin(20+10){[}]
Example Output
yesno
遇到左括号入栈,遇到右括号和栈顶比较,如果不匹配则不匹配,直接break;如果出现右括号的时候当前栈已经是空的,那么就不匹配;如果栈不空,但是没有别的括号再和栈中的元素匹配,那么也不匹配。/***************************本题比较容易忽略的一点************************/题目中说中间可能会有空格,所以读入字符串的时候用gets();
#include <stdio.h>#include <stdlib.h>typedef char elemtype;typedef int status;#define MAXSIZE 100#define OVERFLOW -2#define another 50#define true 1#define false 0typedef struct {elemtype *base;elemtype *top;int stacksize;}Sqstack;status isEmpty(Sqstack &S){if(S.top == S.base)return true;elsereturn false;}void initStack(Sqstack &S){S.base = new elemtype[MAXSIZE];S.top = S.base;S.stacksize = MAXSIZE;}elemtype getTop(Sqstack &S){if(S.base == S.top)return false;elsereturn *(S.top-1);}void Push(Sqstack &S, elemtype e){ //压栈if(S.top-S.base >= S.stacksize){S.base = (elemtype *)realloc(S.base,(another+S.stacksize)*sizeof(elemtype));S.top = S.base + S.stacksize;S.stacksize += another;}*S.top++ = e;}int Pop(Sqstack &S, elemtype &e){if(S.top == S.base) return false;return e = * --S.top;}int match(Sqstack &S, char str[]){int flag;for(int i = 0; str[i] != '\0'; i++){if(str[i] == '('||str[i] == '{'||str[i] == '['){flag = true;Push(S, str[i]);}else if(str[i] == ')'){if(isEmpty(S)){ flag = false; break; }char c = getTop(S);if(c == '('){Pop(S, c);flag = true;}else {flag = false;break;}}else if(str[i] == ']'){if(isEmpty(S)){ flag = false; break; }char c = getTop(S);if(c == '['){Pop(S, c);flag = true;}else {flag = false;break;}}else if(str[i] == '}'){if(isEmpty(S)){ flag = false; break; }char c = getTop(S);if(c == '{'){Pop(S, c);flag = true;}else {flag = false;break;}}}if(!isEmpty(S))flag = false;return flag;}int main(){char str[55];while(gets(str)){Sqstack S;initStack(S);int flag = match(S, str);if(flag == true)printf("yes\n");elseprintf("no\n");}return 0;}
阅读全文
0 0
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 2134-数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- sdut 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配 sdut-oj
- SDUT 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- 使用freemarker导出word文档,支持图文导出
- 每天进步一点点——Linux中的文件描述符与打开文件之间的关系
- React Native在windows环境设置
- swift4.0 从相册中获取图片和拍照
- 小米惹大事了!hr竟然公开表达就业歧视,这种情怀你能接受?
- 数据结构实验之栈与队列四:括号匹配
- SJ中的json 及多维json
- Java 多线程实现方法和switch的理解
- Python2.x与Python3.x版本区别
- 正则表达式
- table表格的相关设置(边框合并、隔行变色、添加内边框、单独设置某一列)
- 使用Google云存储上传图片
- Solr6.0.0以上分词器配置[中文]
- qt中调色板角色的理解