C语言数据结构之栈:括号匹配
括号匹配这是个很简单的题目,如果只有小括号,就模拟进栈和出栈的过程就行了:
注:输入时'@'作为结束标志
#include <stdio.h> int main()
{
freopen("stack.in","r",stdin);
freopen("stack.out","w",stdout);
int in=;
char s[];
scanf("%s",&s);
int i=;
while(s[i]!='@')
{
if(s[i]=='(') in++;
if(s[i]==')') in--;
if(in<) break;
i++;
}
if(in==) printf("YES");
else printf("NO");
return ;
}
样例输入1:2*(x+y)/(1-x)@
样例输出1:YES
样例输入2:(25+x)*(a*(a+b+b)@
样例输出2:NO
至于多括号,就需要创建一个栈了:
输入无需@做结尾
#include <stdio.h>
#include <string.h>
char stack[];
int top=; void push(char c)
{
top++;stack[top]=c;
} int pop()
{
top--;return(stack[top+]);
} int main()
{
freopen("check.in","r",stdin);
freopen("check.out","w",stdout);
char s[];
gets(s);
int lenofs=strlen(s);
int i;
char c;
for(i=;i<=lenofs-;i++)
{
if(s[i]=='(')
{
push('(');
}
if(s[i]==')')
{
push(')');
c=stack[top-];
if(c=='(')
{
pop();pop();
}
}
if(s[i]=='[')
{
push('[');
}
if(s[i]==']')
{
push(']');
c=stack[top-];
if(c=='[')
{
pop();pop();
}
}
if(top<) break;
}
if(top==) printf("OK");
else printf("Wrong");
return ;
}
C语言数据结构之栈:括号匹配的更多相关文章
- leetcode 栈 括号匹配
https://oj.leetcode.com/problems/valid-parentheses/ 遇到左括号入栈,遇到右括号出栈找匹配,为空或不匹配为空, public class Soluti ...
- C语言数据结构之栈:中缀表达式的计算
*注:本人技术不咋的,就是拿代码出来和大家看看,代码漏洞百出,完全没有优化,主要看气质,是吧 学了数据结构——栈,当然少不了习题.习题中最难的也是最有意思的就是这个中缀表达式的计算了(可以算+-*/和 ...
- CF 990C. Bracket Sequences Concatenation Problem【栈/括号匹配】
[链接]:CF [题意]: 给出n个字符串,保证只包含'('和')',求从中取2个字符串链接后形成正确的括号序列的方案数(每个串都可以重复使用)(像'()()'和'(())'这样的都是合法的,像')( ...
- C语言数据结构链栈(创建、入栈、出栈、取栈顶元素、遍历链栈中的元素)
/**创建链栈*创建一个top指针代表head指针*采用链式存储结构*采用头插法创建链表*操作 创建 出栈 入栈 取栈顶元素*创建数据域的结构体*创建数据域的名称指针*使用随机函数对数据域的编号进行赋 ...
- 利用顺序栈解决括号匹配问题(c++)-- 数据结构
题目: 7-1 括号匹配 (30 分) 给定一串字符,不超过100个字符,可能包括括号.数字.字母.标点符号.空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配. 输入格式: 输入在一行 ...
- SDUT-2134_数据结构实验之栈与队列四:括号匹配
数据结构实验之栈与队列四:括号匹配 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给你一串字符,不超过50个字符,可能 ...
- 数据结构——栈的应用 NOI2.2 括号匹配问题
栈是一种数据结构,相当于一个容器,将一个又一个变量从顶端压进去,需要使用时,又从顶端拿出来,其具体使用方法,下面是详细讲解: #include<stack>必须使用此头文件 stack&l ...
- java:数据结构(二)栈的应用(括号匹配)
一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()() 这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...
- C++学习(三十一)(C语言部分)之 栈和队列(括号匹配示例)
括号匹配测试代码笔记如下: #include<stdio.h> #include<string.h> #include <stdlib.h> #define SIZ ...
随机推荐
- 九、Socket之TCP编程
TCP简介 TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务. TCP最主要的特点: ...
- h5拖放-上传图片预览功能
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 新闻头条应用源码ios版
<ignore_js_op> 源码下载:http://code.662p.com/view/13343.html 作者ymcao,源码TopNewsIOS,新闻头条IOS ...
- linux云计算集群架构学习笔记:workstation 12.0 按装Red Hat Enterprise Linux 7(64位)
安装RHEL7.2 步骤: 1.安装虚拟机,按以下截图安装即可 步骤2: Ret hat 7.2 操作系统安装 rhel7因为许可报错解决
- git 撤销修改以及删除文件
撤销修改 1.如果当你修改了代码,然后又发现修改错误以后,想撤销前面的操作的时候该怎么办呢? 既然错误发现得很及时,就可以很容易地纠正它.你可以删掉最后一行,手动把文件恢复到上一个版本的状态.如果用 ...
- plot函数功能总结
基本形式 >> y=[1 2 3 4 5 6]; >> plot(y) 生成的图形是以序号为横坐标.数组y的数值为纵坐标画出的折线. >> x=linspace(0 ...
- Css字体中英文对照表
css字体中文.英文.Unicode名对照表 另外注意:繁体中文字体名,在简体中文系统中是不能被识别的. 中文名 英文名 Unicode Unicode 2 Mac OS 华文细黑 STHeiti L ...
- copy与deepcopy
对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变化是不同的. 赋值,只是创建一个变量,该 ...
- 用fiddler工具做接口测试
接口测试的原理我理解很简单,是你发送数据,看返回数据是否正确,返回值类型是否正常,主要点是多种数据的,返回结果正常 和其他应用程序相同,java中需要知道你的参数,字段有哪些,我们就去给他造数据,而先 ...
- tcl/tk
http://blog.csdn.net/dulixin/article/category/365058 http://blog.csdn.net/dulixin/article/category/3 ...