括号匹配编码c语言,用c语言实现括号匹配算法
/*括号匹配算法*/
#include
#define FALSE 0
#define TRUE 1
#define MAXSIZE 100
typedef char DataType;
//定义栈
typedef struct stack{
DataType data[MAXSIZE];
int top;
}SeqStack;
//初始化栈
void InitStack(SeqStack *s)
{
s->top = -1;
}
//判断栈是否为空
int IsEmpty(SeqStack *s)
{
if(s->top == -1)
return TRUE;
return FALSE;
}
//判断栈是否已满
int IsFull(SeqStack *s)
{
if(s->top == MAXSIZE-1)
return TRUE;
return FALSE;
}
//出栈
void PopStack(SeqStack *s, DataType temp)
{
if(IsEmpty(s))
return;
temp = s->data[s->top];
s->top --;
}
//压栈
void PushStack(SeqStack *s,DataType temp)
{
if(IsFull(s))
return;
s->top ++ ;
s->data[s->top]=temp;
}
//判断两个括号是否匹配
int Match(char chone,char chtwo)
{
if(chone=='(' && chtwo==')')
return TRUE;
else if(chone == '{' && chtwo == '}')
return TRUE;
else if(chone == '[' && chtwo == ']')
return TRUE;
else
return FALSE;
}
//取栈顶元素
void GetTopStack(SeqStack *s , DataType *temp)
{
if(IsEmpty(s))
return;
*temp = s->data[s->top];
}
void BracketMatch(char *str)
{
SeqStack s;
int i;
char ch;
InitStack(&s);
for(i=0 ; str[i]!='\0';i++ )
{
switch(str[i]){
case '(':
case '[':
case '{':
PushStack(&s,str[i]);
break;
case ')':
case ']':
case '}':
if(IsEmpty(&s))
{
printf("右括号多余\n");
return;
}else{
GetTopStack(&s,&ch);
if(Match(ch,str[i]))
PopStack(&s,ch);
else{
printf("\n对应的右括号不同类\n");
return;
}/*if*/
}/*else*/
}/*for*/
}/*switch*/
if(IsEmpty(&s))
printf("\n括号匹配\n");
else
printf("\n左括号多余\n");
}
int main()
{
char str[MAXSIZE];
int i;
printf("Input the bracket string: \n");
scanf("%s",str);
BracketMatch(str);
return 1;
}
括号匹配编码c语言,用c语言实现括号匹配算法相关推荐
- 括号匹配编码c语言,括号匹配(c语言实现)
1要求 编写程序检查该字符串的括号是否成对出现,而且不能交叉出现. 输入: 一个字符串,里边可能包含"()"."{}"."[]"三种括号,& ...
- 括号匹配,实现简单计算器(加减乘除,小括号)
括号匹配算法 利用栈先进后出的特性,思路分三步: 1.遇到左括号,直接入栈,继续向后遍历: 2.遇到右括号, (1).如果栈为空,说明无对应左括号,则返回表达式不匹配: (2).如果栈不为为空,将栈顶 ...
- 数据结构括号匹配代码_栈:如何实现有效括号的判断?
点击上方蓝字,关注:无量测试之道 作者 | 无量测试之道 编辑 | 小 晴有效括号,刷过LeetCode的也许对这道题很熟悉. 1.开篇问题:有效的括号[1] 假如现在要你来解这道题 ...
- c语言括号匹配的检验,检验括号匹配的算法
用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...
- 利用栈进行数制转换和括号匹配(C语言)
数制转换:将十进制数转换为任意进制数.由数制转换的计算公式 N = (N / d) × d + N % d (其中N为想转换的十进制数,d为想转换的进制) 我们可以知道其转换后的结果是逆序输出,故可以 ...
- python括号匹配o(1)复杂度_Python面试题:使用栈处理括号匹配问题
括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括 ...
- 数据结构之栈的应用:括号匹配问题
栈的应用 括号匹配问题: 原理: 代码实现: 括号匹配问题: 原理: 1.括号匹配成功的情况:栈为空 2.括号匹配失败的情况: a.下一个为右括号但是和栈顶左括号不匹配 b.下一个是右括号但栈以空 c ...
- vs2013 - 高亮设置 括号匹配 (方括号) 大括号匹配 Visual Studio 2013
Visual Studio 2013 vs2013 - 高亮设置 括号匹配 (方括号) 大括号匹配 1. 高亮设置 括号匹配(方括号) 工具 -> 选项- -> 环境 -> 字体和颜 ...
- Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)
Algorithm:C++语言实现之链表相关算法(单链公共结点问题.一般LCA.括号匹配.最长括号匹配.逆波兰表达式Reverse Polish Notation.直方图矩形面积.收集雨水问题) 目录 ...
最新文章
- python录入数据至ppt_用 Python 让你的 PPT 数据动起来
- Mathematica笔记
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
- Faster-rcnn详解
- 文档中根元素后面的标记格式必须正确。
- 复地邮箱服务器地址,打印服务器设置方法
- 服饰贴图定制小程序V1.2.4安装更新一体包+小程序前端
- python 当前目录_Python中的搜索路径顺序
- Python 父目录获取
- mysql觸發器_mysql觸發器案例
- 元宇宙火了!终于有人把虚拟现实(AR/VR/MR)讲明白了
- 小程序嵌入h5并传值
- 密码应用安全性评估实施要点之三密钥管理要求与实现要点
- 学校计算机教室解说词词,小学各专用教室解说词.doc
- 点线面的意义_【干货】设计中的点线面到底有什么用?
- sql 计算法定假节假日解决方案一
- 考研英语 单词常见前后缀/词根
- 设计模式C++描述----01.单例(Singleton)模式
- 网站查询服务器租期,游戏服务器租期
- 解决打印机“正在删除、正在打印”没反应问题