数据结构实验之栈与队列四:括号匹配
来源:互联网 发布:大兴西瓜数据库 编辑:程序博客网 时间:2024/06/07 09:58
数据结构实验之栈与队列四:括号匹配
Problem Description
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
Input
输入数据有多组,处理到文件结束。
Output
如果匹配就输出“yes”,不匹配输出“no”
Example Input
sin(20+10)
{[}]
Example Output
yes
no
思路:遇到左括号均进栈,右括号进行判断
不匹配有三种情况:1.右括号与左括号不匹配 2.右括号多余(栈空了) 3. 左括号多余(栈非空)
#include <stdio.h>#include <stdlib.h>#define stackmax 100000#define stacknum 100#define OK 1#define ERROR 0#define OVERFLOW -2#define TRUE 1#define FALSE 0typedef int status;typedef char selemtype;typedef struct{ selemtype *base; selemtype *top; int stacksize;} sqstack;int inistack(sqstack &S){ S.base=new selemtype[stackmax]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=stackmax; return OK;}int push(sqstack &S, selemtype e){ if(S.top-S.base>=S.stacksize) { S.base=(selemtype *)realloc(S.base,(S.stacksize+stacknum)*sizeof(selemtype)); if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=stacknum; } *S.top=e; S.top++; return 0;}int pop(sqstack &S, selemtype &e){ if(S.base==S.top) return ERROR; else e=*--S.top; return OK;}status isempty(sqstack S){ if(S.base==S.top) return TRUE; else return FALSE;}int main(){ char s[55]; selemtype e; while(gets(s))//多组输入字符串 { sqstack S; inistack(S);//多组,每组都要初始化栈 int i; int flag=1; for(i=0;s[i]!='\0';i++)//遍历字符串!!啊!s[i]!='\0' { if(s[i]=='('||s[i]=='{'||s[i]=='[') push(S,s[i]); else if(s[i]==')') { if(isempty(S))//空栈代表右括号多余 { flag=0; break; } else { pop(S,e); if(e!='(') { flag=0; break; } } } else if(s[i]=='}') { if(isempty(S))//空栈代表右括号多余 { flag=0; break; } else { pop(S,e); if(e!='{') { flag=0; break; } } } else if(s[i]==']') { if(isempty(S))//空栈代表右括号多余 { flag=0; break; } else { pop(S,e); if(e!='[') { flag=0; break; } } } } if(!isempty(S))//遍历完毕后,若栈非空:左括号多余 { flag=0;//此处如果加 break,不对!break只能加在循环里! } if(flag) printf("yes\n"); else printf("no\n"); } return 0;}
阅读全文
0 0
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 2134-数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- sdut 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配 sdut-oj
- SDUT 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- Session对象的灵活使用
- 【C语言】【unix c】基于TCP传输层的编程模型
- Android开发入门-《创建Fragment》
- 【C语言】【unix c】并发服务器的实现
- ACM日记
- 数据结构实验之栈与队列四:括号匹配
- 面试题积累
- Linux 定时任务 crontab
- 【C语言】【unix c】服务端与客户端建立通信的实例
- HashMap中按key排序
- MySql已有的表中增加一列
- PID小结(含控制虚拟代码)
- Redis系列之10分钟玩转Redis(一):
- APUE 进程环境