/*括号匹配算法*/

#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语言实现括号匹配算法相关推荐

  1. 括号匹配编码c语言,括号匹配(c语言实现)

    1要求 编写程序检查该字符串的括号是否成对出现,而且不能交叉出现. 输入: 一个字符串,里边可能包含"()"."{}"."[]"三种括号,& ...

  2. 括号匹配,实现简单计算器(加减乘除,小括号)

    括号匹配算法 利用栈先进后出的特性,思路分三步: 1.遇到左括号,直接入栈,继续向后遍历: 2.遇到右括号, (1).如果栈为空,说明无对应左括号,则返回表达式不匹配: (2).如果栈不为为空,将栈顶 ...

  3. 数据结构括号匹配代码_栈:如何实现有效括号的判断?

        点击上方蓝字,关注:无量测试之道    作者 | 无量测试之道   编辑 | 小 晴有效括号,刷过LeetCode的也许对这道题很熟悉. 1.开篇问题:有效的括号[1] 假如现在要你来解这道题 ...

  4. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

  5. 利用栈进行数制转换和括号匹配(C语言)

    数制转换:将十进制数转换为任意进制数.由数制转换的计算公式 N = (N / d) × d + N % d (其中N为想转换的十进制数,d为想转换的进制) 我们可以知道其转换后的结果是逆序输出,故可以 ...

  6. python括号匹配o(1)复杂度_Python面试题:使用栈处理括号匹配问题

    括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括 ...

  7. 数据结构之栈的应用:括号匹配问题

    栈的应用 括号匹配问题: 原理: 代码实现: 括号匹配问题: 原理: 1.括号匹配成功的情况:栈为空 2.括号匹配失败的情况: a.下一个为右括号但是和栈顶左括号不匹配 b.下一个是右括号但栈以空 c ...

  8. vs2013 - 高亮设置 括号匹配 (方括号) 大括号匹配 Visual Studio 2013

    Visual Studio 2013 vs2013 - 高亮设置 括号匹配 (方括号) 大括号匹配 1. 高亮设置 括号匹配(方括号) 工具 -> 选项- -> 环境 -> 字体和颜 ...

  9. Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)

    Algorithm:C++语言实现之链表相关算法(单链公共结点问题.一般LCA.括号匹配.最长括号匹配.逆波兰表达式Reverse Polish Notation.直方图矩形面积.收集雨水问题) 目录 ...

最新文章

  1. python录入数据至ppt_用 Python 让你的 PPT 数据动起来
  2. Mathematica笔记
  3. Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
  4. Faster-rcnn详解
  5. 文档中根元素后面的标记格式必须正确。
  6. 复地邮箱服务器地址,打印服务器设置方法
  7. 服饰贴图定制小程序V1.2.4安装更新一体包+小程序前端
  8. python 当前目录_Python中的搜索路径顺序
  9. Python 父目录获取
  10. mysql觸發器_mysql觸發器案例
  11. 元宇宙火了!终于有人把虚拟现实(AR/VR/MR)讲明白了
  12. 小程序嵌入h5并传值
  13. 密码应用安全性评估实施要点之三密钥管理要求与实现要点
  14. 学校计算机教室解说词词,小学各专用教室解说词.doc
  15. 点线面的意义_【干货】设计中的点线面到底有什么用?
  16. sql 计算法定假节假日解决方案一
  17. 考研英语 单词常见前后缀/词根
  18. 设计模式C++描述----01.单例(Singleton)模式
  19. 网站查询服务器租期,游戏服务器租期
  20. 解决打印机“正在删除、正在打印”没反应问题

热门文章

  1. 【django】视图和URL
  2. 通过Jenkins执行脚本,生成自动化测试报告
  3. mk_trustonic.mk编译脚本
  4. VC6.0环境设置说明
  5. 编译器扩展SEH(1)
  6. 析构设置为虚函数的原因
  7. 【安全漏洞】从补丁追溯漏洞触发路径
  8. python模拟c的struct
  9. MySQL CHAR、VARCHAR、TEXT、ENUM、SET(字符串类型)
  10. 1130 Infix Expression (25 分)【难度: 一般 / 知识点: 中序遍历】