[NYOJ] 02括号配对问题(c语言链栈实现)
来源:互联网 发布:php 16进制 编辑:程序博客网 时间:2024/06/17 17:27
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=2
括号配对问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
- 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
- 样例输入
3[(])(])([[]()])
- 样例输出
NoNoYes
解析
1. 括号匹配的四种可能性:
①左右括号配对次序不正确
②右括号多于左括号
③左括号多于右括号
④左右括号匹配正确
2. 算法思想:
1.顺序扫描每一个字符直至该行结束(遇到'\n'),当遇到栈空或者遇到左括号时该括号进栈;
2.当扫描到某一种类型的右括号时,比较当前栈顶元素是否与之匹配,若匹配,出栈继续判断;
3.若当前栈顶元素与当前扫描的右括号括号不匹配,则将该右括号进栈(此时已经匹配失败);
4.若最终栈为空,则括号匹配成功,如果不为空,则不成功;
#include <stdio.h>#include <stdlib.h>typedef struct StackNode{ char data; struct StackNode *next;}StackNode, *LinkP;typedef struct LinkStack{ LinkP top; int count;}LinkStack;/*压栈*/int push(LinkStack *S, char e){ LinkP p = (LinkP)malloc(sizeof(struct StackNode)); p->data = e; p->next = S->top; S->top = p; S->count++; return 0;}/*出栈*/char pop(LinkStack *S){ LinkP p; char e = S->top->data; p = S->top; S->top = S->top->next; free(p); S->count--; return e;}/*清空栈*/int ClearStack(LinkStack *S){ LinkP p; while(S->top){ p = S->top; S->top = S->top->next; S->count--; free(p); } return 0;}int main(){ int n; char ru,chu,tmp; LinkStack s; scanf("%d",&n); getchar(); s.top = NULL; s.count = 0; while(n--){ ClearStack(&s); while((ru = getchar())!='\n'){ if(!s.top){ push(&s,ru); }else{ if(ru=='(' || ru=='[')push(&s,ru); else{ if(ru==']'){ if(s.top->data=='[')pop(&s); else push(&s,ru); } if(ru==')'){ if(s.top->data=='(')pop(&s); else push(&s,ru); } } } } if(!s.top){ printf("Yes\n"); }else{ printf("No\n"); } } return 0;}
0 0
- [NYOJ] 02括号配对问题(c语言链栈实现)
- nyoj-02 括号配对问题
- NYOJ 02 括号配对问题
- NYOJ - 括号配对问题
- nyoj 括号配对问题
- NYOJ【括号配对问题】
- NYOJ-括号配对问题
- nyoj 括号配对问题
- NYOJ 括号配对问题
- nyoj括号配对问题
- nyoj 括号配对问题
- NYOJ-括号配对问题
- NYOJ 括号配对问题
- NYOJ - 括号配对问题
- NYOJ-括号配对问题
- nyoj 括号配对问题
- NYOJ 括号配对问题
- nyoj 括号配对问题
- BSOJ 4852:比赛 暴力优化
- codz.me's blog
- 【hihocoder】#1094 : Lost in the City
- Photoshop cs7发布,设计师将哭晕在厕所
- Android网络开源库-Retrofit(五)简易封装
- [NYOJ] 02括号配对问题(c语言链栈实现)
- strcat()函数和strncat()函数
- android studio导包不显示包内容
- leetcode题解日练--2016.10.4
- 运行时没问题 编译打包时出现 Error: Expected resource of type styleable [ResourceType] 错误
- 黑客新玩法:广告大屏上演日本色情片
- JavaFX学习笔记(01)
- BP神经网络与卷积神经网络(CNN)
- $.event.special自定义事件机制