C++之桟的应用---括号匹配
刚開始学习数据结构。用桟写了一个经典的应用,括号匹配。
算法思路:
输入字符串时。将 '(' , '[' 压入桟。遇到 ‘)’ ']' 时,再栈顶出桟。进行括号匹配。假设成功匹配。则继续进行。否则。程序结束,输入不匹配信息,
假设 ‘)’ ']' 均匹配,则看推断桟是否为空,假设为空,则输入匹配。否则,输出符号数量不匹配。
#include<iostream>
using namespace std;
#define max 100 struct stack
{
int Top;
int MaxSize;
char *element;
}; typedef struct stack Stack; void Init(Stack *S,int n)
{
if(n>0)
{
S->Top=-1;
S->MaxSize=n;
S->element=new char [S->MaxSize];
}
} bool IsFull(Stack *S)
{
return (S->Top==S->MaxSize-1);
} bool IsEmpty(Stack *S)
{
return (S->Top==-1);
} void push(Stack *S,char x)
{
if(!IsFull(S))
S->element[++S->Top]=x;
else
{
cout<<"桟满"<<endl;
}
}
char pop(Stack *S)
{
if(!IsEmpty(S))
return S->element[S->Top--];
else
{
cout<<"桟空"<<endl;
return -1;
}
}
int main()
{
Stack *S=new Stack;
Init(S,max); bool flag=true;
bool flag_1=true;
bool flag_2=true; cout<<"请输入字符串:"<<endl;
char ch;
while ((ch = getchar()) != '\n')
{
switch(ch)
{
case '(': push(S,ch);break;
case '[': push(S,ch);break;
case ')':
{
if(pop(S)!='(' && flag_2)
{
cout<<"')'"<<"不匹配"<<endl;
flag_1=false;
flag=false;
break;
}
else
{
continue;
}
}
case ']':
{
if(pop(S)!='[' && flag_1)
{
cout<<"']'"<<"符号不匹配"<<endl;
flag_2=false;
flag=false;
break;
}
else
{
continue;
}
}
} } if(!IsEmpty(S) && flag)
{
cout<<"数量不匹配"<<endl;
}
else if(flag)
{
cout<<"匹配"<<endl;
}
system("pause");
return 0;
}
都是简单的定义。简单的功能。
C++之桟的应用---括号匹配的更多相关文章
- 括号匹配 区间DP (经典)
描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来 ...
- YTU 3003: 括号匹配(栈和队列)
3003: 括号匹配(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...
- [原]NYOJ 括号匹配系列2,5
本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...
- POJ C程序设计进阶 编程题#4:括号匹配问题
编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- 【栈思想、DP】NYOJ-15 括号匹配(二)
括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...
- NYOJ 题目15 括号匹配(二)(区间DP)
点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...
- C语言数据结构之栈:括号匹配
括号匹配这是个很简单的题目,如果只有小括号,就模拟进栈和出栈的过程就行了: 注:输入时'@'作为结束标志 #include <stdio.h> int main() { freopen(& ...
- [NYOJ 15] 括号匹配(二)
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[&qu ...
随机推荐
- Java加密简介
加密算法: 1.对称加密 DES AES 2.非对称加密 RSA 3.散列函数算法加密 (单项加密)::MD5.SHA.Mac 4.数字签名算法:RSA.DSA 其中,前三种主要完成数据的加解密: ...
- cesium primitive方式 ————http://blog.sina.com.cn/s/blog_15e866bbe0102y0ji.html
Cesium学习笔记-工具篇17-PrimitivePoint自定义渲染-点 (2018-08-28 16:12:06) 转载▼ 标签: cesium primitive 自定义渲染 shader c ...
- 【东软实训】SQL多表链接
如果一个查询同时涉及两个以上的表,则称之为链接查询,链接查询是关系数据库中最主要的查询,主要包括等值链接查询.非等值链接查询.自身链接查询.外链接查询和复合条件链接查询. 这篇博文我们来对多表链接进行 ...
- Android ListView setEmptyView
http://my.eoe.cn/yaming/archive/879.html 1 当我们使用ListView或GridView的时候,当列表为空的时候,我们需要一个特殊的View来提示用户操作,于 ...
- iOS中声音采集与播放的实现(使用AudioQueue)
都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用 ...
- 笔试算法题(39):Trie树(Trie Tree or Prefix Tree)
议题:TRIE树 (Trie Tree or Prefix Tree): 分析: 又称字典树或者前缀树,一种用于快速检索的多叉树结构:英文字母的Trie树为26叉树,数字的Trie树为10叉树:All ...
- [LUOGU] P2251 质量检测
题目背景 无 题目描述 为了检测生产流水线上总共N件产品的质量,我们首先给每一件产品打一个分数A表示其品质,然后统计前M件产品中质量最差的产品的分值Q[m] = min{A1, A2, ... Am} ...
- matplotlib.pyplot.pcolormesh
matplotlib.pyplot.pcolormesh(*args, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, shading ...
- UVa 210 并行程序模拟(deque)
题意: 模拟n个程序运行 格式一共有5种:var = constant(赋值):print var(打印):lock:unlock:end, 上述5种语句分别需要t1.t2.t3.t4.t5单位时间 ...
- codeforce 810B Summer sell-off (贪心 排序)
题意: 商店准备用n天售货(每天的货物都是一样的),第i天会卖ki件货物,并且会有li个顾客来买. 如果货物没卖完, 那么每个顾客一定会买一件. 如果货物有剩, 不会保存到第二天. 现在给定一个f, ...