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 ...
随机推荐
- git的使用 及一些常见的错误处理
git安装使用 添加文件到Git仓库,分两步: 1.使用命令git add <file>,注意,可反复多次使用,添加多个文件: 2.使用命令git commit -m <messag ...
- 【C语言】控制台窗口图形界面编程(六):光标设置
目录 00. 目录 01. CONSOLE_CURSOR_INFO结构 02. GetConsoleCursorInfo函数 03. SetConsoleCursorInfo函数 04. SetCon ...
- 【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区
目录 00. 目录 01. COORD结构体 02. SMALL_RECT结构 03. CONSOLE_SCREEN_BUFFER_INFO结构体 04. GetConsoleScreenBuffer ...
- DHCP和PXE
继续学习,Let's go!DHCP和PXE都是什么呢?如果非科班出身,可能一脸懵逼,好多东西需要去学习了,真的,继续学吧,付出不一定会有回报,不付出肯定就是等死了,呵呵! 一.DHCP 真正需要手动 ...
- vue 中slot 的具体用法
子组件 <template> <div class="slotcontent"> <ul> <!--<slot></sl ...
- 使用maven的mybatis-generator代码生成器插件生成实体类、mapper配置文件和mapper接口(使用idea)
接着之前创建的ssmMaven项目 一: 在pom文件中加入mybatis-generator插件 <plugins> <plugin> <groupId>org. ...
- IDEA修改背景图片和主题代码风格
使用IDEA有一段时间了,之前为了写代码没时间折腾这玩意,以前使用Eclipse的时候一次性折腾好了,现在把之前Eclipse的配置再配到IDEA里面来,下面是效果图.Eclipse的设置见:点击这里 ...
- HUAS Summer Contest#4 D题 DP
Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了.要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的 ...
- List<> 集合 删除指定行
不多说,直接上代码 public class Name { public string NameInfo { get; set; } } 删除值为Name2的行 static void Main(st ...
- NormalMap 法线贴图
法线贴图+纹理贴图(细节明显) 纹理贴图 法线贴图 法线贴图 存储法线的一张贴图,归一化的法线的 xyz 的值被映射成为对应的 RGB 值.归一化的法线值为[-1,1],RGB的每一个分量为无符号的8 ...