数据结构实验之栈与队列四:括号匹配
来源:互联网 发布:淘宝收藏加购软件 编辑:程序博客网 时间:2024/06/05 23:57
Problem Description
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
Input
输入数据有多组,处理到文件结束。
Output
如果匹配就输出“yes”,不匹配输出“no”
Example Input
sin(20+10){[}]
Example Output
yesno
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define STACKINITSIZE 100#define STACKINCREMENT 10#define OVERFLOW -2#define ERROR -1#define OK 1typedef char SElemType ;typedef int Statu;typedef struct node{ SElemType * base; SElemType * top; int stacksize;} SqStack;Statu Check(char a[]);Statu InitList(SqStack &S);Statu Push(SqStack &S, SElemType e);Statu Pop(SqStack &S, SElemType &e);Statu Del_SqStack(SqStack &S);Statu Compare(SqStack &S, SElemType e);int main(){ int f; char a[60]; while(gets(a)) { f = Check(a); if(f == 1) printf("yes\n"); else printf("no\n"); } return 0;}Statu Del_SqStack(SqStack &S){ S.top = S.base; return OK;}Statu InitStack(SqStack &S){ S.base =(SElemType *)malloc(STACKINITSIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top = S.base; S.stacksize = STACKINITSIZE; return OK;}Statu Push(SqStack &S, SElemType e){ if(S.top - S.base >= S.stacksize) { S.base =(SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } * S.top++ = e; return OK;}Statu Pop(SqStack &S, SElemType &e){ if(S.top == S.base) e = 'a'; e = * --S.top; return OK;}Statu Compare(SqStack &S, SElemType e){ char c; switch(e) { case ')': Pop(S, c); if(c == '(') return OK; else return 0; case ']':Pop(S, c); if(c == '[') return OK; else return 0; case '}':Pop(S, c); if(c == '{') return OK; else return 0; } return ERROR;}Statu Check(char a[]){ int i, l, t; SqStack S; InitStack(S); l = strlen(a); for(i = 0; i < l; i++) { if(a[i] == '(' || a[i] == '[' || a[i] == '{') Push(S, a[i]); else if(a[i] == ')' || a[i] == ']' || a[i] == '}') { t = Compare(S, a[i]); if(t == 0) break; } } if(t == 0) return ERROR; else if(S.base != S.top) return ERROR; else return OK;}
阅读全文
0 0
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 2134-数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配
- sdut 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈与队列四:括号匹配 sdut-oj
- SDUT 2134 数据结构实验之栈与队列四:括号匹配
- 数据结构实验之栈四:括号匹配
- 数据结构实验之栈四:括号匹配
- Spring Framework Overview
- Oracle触发器实现更新一张表数据时判断另一张表是否存在,存在更新数据,不存在插入数据
- Leetcode2. Add Two Numbers
- Servlet实现Cookie的创建,读取,删除
- SQL Server大量数据秒级插入/新增/删除
- 数据结构实验之栈与队列四:括号匹配
- oracle 11g 使用listagg函数合并多行为一行
- 分布式Paxos算法
- CSDN-markdown编辑器使用指南
- linux移植Mplayer基本配置与错误总结
- 别问为什么了 快上车 !!(axure 8.1注册码)
- 阿里云自研云数据库POLARDB,未来企业的数字化答案
- 谷歌和火狐下input输入框中的光标大小显示不一致
- Java基础