刚開始学习数据结构。用桟写了一个经典的应用,括号匹配。

算法思路:

输入字符串时。将 '(' , '['  压入桟。遇到 ‘)’  ']'  时,再栈顶出桟。进行括号匹配。假设成功匹配。则继续进行。否则。程序结束,输入不匹配信息,

假设 ‘)’ ']' 均匹配,则看推断桟是否为空,假设为空,则输入匹配。否则,输出符号数量不匹配。

#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++之桟的应用---括号匹配的更多相关文章

  1. 括号匹配 区间DP (经典)

    描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来 ...

  2. YTU 3003: 括号匹配(栈和队列)

    3003: 括号匹配(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...

  3. [原]NYOJ 括号匹配系列2,5

    本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...

  4. POJ C程序设计进阶 编程题#4:括号匹配问题

    编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...

  5. 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))

    描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...

  6. 【栈思想、DP】NYOJ-15 括号匹配(二)

    括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...

  7. NYOJ 题目15 括号匹配(二)(区间DP)

    点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...

  8. C语言数据结构之栈:括号匹配

    括号匹配这是个很简单的题目,如果只有小括号,就模拟进栈和出栈的过程就行了: 注:输入时'@'作为结束标志 #include <stdio.h> int main() { freopen(& ...

  9. [NYOJ 15] 括号匹配(二)

    括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 给你一个字符串,里面只包含"(",")","[&qu ...

随机推荐

  1. git的使用 及一些常见的错误处理

    git安装使用 添加文件到Git仓库,分两步: 1.使用命令git add <file>,注意,可反复多次使用,添加多个文件: 2.使用命令git commit -m <messag ...

  2. 【C语言】控制台窗口图形界面编程(六):光标设置

    目录 00. 目录 01. CONSOLE_CURSOR_INFO结构 02. GetConsoleCursorInfo函数 03. SetConsoleCursorInfo函数 04. SetCon ...

  3. 【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区

    目录 00. 目录 01. COORD结构体 02. SMALL_RECT结构 03. CONSOLE_SCREEN_BUFFER_INFO结构体 04. GetConsoleScreenBuffer ...

  4. DHCP和PXE

    继续学习,Let's go!DHCP和PXE都是什么呢?如果非科班出身,可能一脸懵逼,好多东西需要去学习了,真的,继续学吧,付出不一定会有回报,不付出肯定就是等死了,呵呵! 一.DHCP 真正需要手动 ...

  5. vue 中slot 的具体用法

    子组件 <template> <div class="slotcontent"> <ul> <!--<slot></sl ...

  6. 使用maven的mybatis-generator代码生成器插件生成实体类、mapper配置文件和mapper接口(使用idea)

    接着之前创建的ssmMaven项目 一: 在pom文件中加入mybatis-generator插件 <plugins> <plugin> <groupId>org. ...

  7. IDEA修改背景图片和主题代码风格

    使用IDEA有一段时间了,之前为了写代码没时间折腾这玩意,以前使用Eclipse的时候一次性折腾好了,现在把之前Eclipse的配置再配到IDEA里面来,下面是效果图.Eclipse的设置见:点击这里 ...

  8. HUAS Summer Contest#4 D题 DP

    Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了.要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的 ...

  9. List<> 集合 删除指定行

    不多说,直接上代码 public class Name { public string NameInfo { get; set; } } 删除值为Name2的行 static void Main(st ...

  10. NormalMap 法线贴图

    法线贴图+纹理贴图(细节明显) 纹理贴图 法线贴图 法线贴图 存储法线的一张贴图,归一化的法线的 xyz 的值被映射成为对应的 RGB 值.归一化的法线值为[-1,1],RGB的每一个分量为无符号的8 ...