NYOJ2括号配对问题
括号配对是最基本的栈的问题,它是栈入门的经典题目,思路是,如果是左括号直接进栈,如果是右括号,这时就要比较栈顶的元素与他是否匹配,如果匹配则出栈,否则进栈,下面是代码的实现:
#include <stdio.h>
#include <stdlib.h>
typedef struct stack{//定义栈来存储括号
char ch;
struct stack *next;
}link_stack;
link_stack * init_link_stack();
link_stack * push_stack(link_stack *top, char ch);
link_stack * pop_stack(link_stack *top);
int main()
{
int n;
scanf("%d", &n);
getchar();
while(n --)
{
link_stack * top;
top = init_link_stack();//初始化top指针
char ch[];
scanf("%s", ch); int i = ;
while(ch[i] != '\0')//判断读到结束符
{
if(((ch[i] == ']') && (top -> ch == '['))||((ch[i] == ')') &&(top -> ch == '(')))//如果将要进栈的是右括号,判断栈顶元素是否为左括号,如果是就弹出
top = pop_stack(top);
else
top = push_stack(top, ch[i]);//否则压栈
i ++;
}
if(top -> ch == '')//判断栈是否为空
printf("Yes\n");
else
printf("No\n");
}
return ;
} link_stack * init_link_stack()//初始化栈函数
{
link_stack *node;
node = (link_stack *) malloc(sizeof(link_stack));
node -> next = NULL;
node ->ch = '';
return node;
}
link_stack * push_stack(link_stack *top, char ch)//入栈函数
{
link_stack *node;
node = init_link_stack();
node -> ch = ch;
node -> next = top;
top = node;
return top;
}
link_stack * pop_stack(link_stack *top)//出栈函数
{
link_stack *node;
if(top -> next == NULL)
return top;
else
{
node = top;
top = top -> next;
free(node);
return top; } }
NYOJ2括号配对问题的更多相关文章
- NYOJ2—括号配对问题
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=1 ...
- NYOJ1——A+B Problem NYOJ2——括号配对问题
A+B Problem 时间限制:3000 ms | 内存限制:65535 KB 难度:0 描述:此题为练手用题,请大家计算一下a+b的值 输入:输入两个数,a,b 输出:输出a+b的值 样 ...
- NYOJ2 括号配对问题
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=1 ...
- NYOJ-2 括号配对问题 -- 数据结构_堆栈
以前做过的,现在整理一下,主要是堆栈的使用 1.碰到左括号就入栈,碰到右括号就从栈里弹出一个和当前比配,匹配失败就肯定是NO了; 2.如果右括号弹栈的时候栈空,则说明之前没有和右括号匹配的左括号了,这 ...
- 括号配对问题--nyoj-2(栈)
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=10 ...
- ACM:UESTC - 649 括号配对问题 - stack
UESTC - 649 括号配对问题 Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu ...
- 括号配对问题_栈<stack>
问题 A: 括号配对问题 时间限制: 3 Sec 内存限制: 128 MB提交: 3 解决: 2[提交][状态][讨论版] 题目描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行 ...
- NYOJ之括号配对问题
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N&l ...
- ACM 括号配对问题
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=1 ...
随机推荐
- 手机端的META你有多了解?
我们先来简单了解下meta标签:meta指元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 标签位于文档的头部,不包含任何内容. 标签的属性定 ...
- Scut AccountServer
开始以Scut搭建服务器框架: 1. 初始目录结构: libs 存放 scut 的引擎文件: release 存放 src 输出的文件: src 存放各子工程源文件: 2. Install.bat:目 ...
- Recovery和Charger模式下屏幕旋转180度[转]
如何让Recovery (系统固件升级),charger(关机充电动画)时屏幕旋转180度 解决方法: 1.在bootable\recovery\minui\Graphics.c 文件找到gr_fli ...
- linux主要目录的作用
手动敲一遍.算是加强记忆吧~ /:文件系统的入口,也是最高一级的目录 /bin:最基本的且着急用户和普通用户都可以使用的命令放在此目录下,如:ls.cp等 /boot:存放Linux的内核及引导系统所 ...
- json前后台传值
谈到JSON,简单的说就是一种数据交换格式.近年来,其在服务器之间交换数据的应用越来越广,相比XML其格式更简单.编解码更容易.扩展性更好,所以深受开发人员的喜爱. 下面简单的写一下在项目中前后台js ...
- MySql的卸载问题
windows下mysql的卸载: 彻底卸载Mysql的方法: (1),先在服务(开始——>控制面板——>管理工具——>服务)里停掉MySQL的服务.打开控制面板-添加删除程序, ...
- Linux中查看进程的多线程pstree, ps -L
Linux中查看进程的多线程 在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢? 本文介绍3种命令来查看Linux系统中的线程(LWP)的情况:在我的 ...
- Play on Words(有向图欧拉路)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8571 Accepted: 2997 Description Some ...
- Computer Vision Algorithm Implementations
Participate in Reproducible Research General Image Processing OpenCV (C/C++ code, BSD lic) Image man ...
- UNIX环境下的消息队列
消息队列和共享内存一样,也是一种IPC对象.消息队列其实就是消息的链表,每一则消息都是用户自己的结构体.服务端这边创建消息队列,客户端这边打开消息队列,两个进程就可以进行通信.创建和打开消息队列使用函 ...