括号配对检查

栈的应用——C程序的括号配对检查 在括号配对检查中,我们可以使用栈来跟踪括号的正确配对。当我们遇到一个右括号时,我们将检查栈顶的元素是否是与之配对的左括号。如果是配对的括号,我们将从栈中弹出左括号并继续处理下一个字符;如果不是配对的括号,或者栈为空,那么意味着括号不配对,我们可以立即停止检查并报告错误。通过利用栈的后进先出特性,我们可以轻松地跟踪括号的配对情况,从而确保程序的正确性。运行程序后,如果括号配对正确,将输出"括号配对正确",否则输出"括号配对错误"。),我们将检查栈顶的元素是否与之配对,如果不配对或栈为空,则括号不配对,返回。 阅读详情

利用栈来解决括号配对问题,左括号配右括号, 如:  (  )  配对正确    (  ]   配对错误           (  [  ]  ) 配对正确     (   [  )   ) 配对错误

代码简单,注释可以看懂

 

#include<stdio.h>
#include<malloc.h>
#define STACK_INIT_SIZE	 100
#define STACKINCREMENT 10
typedef struct 
{
	char *base;
	char *top;
	int stacksize;
} SqStack;

int main()
{
	//各函数集的声明 
	bool Push(SqStack &s , char e);
	bool Pop(SqStack &s , char &e);
	bool GetTop(SqStack s , char &e);
	bool InitStack(SqStack &s);
	bool  panDuan(char kuoHao[] , SqStack &s);
	
	
	char kuoHao[8]={'[' , '(' , '[' , '(' ,'[' , ']' , ')' , '('};
	SqStack s;
	InitStack(s);
	if( panDuan(kuoHao , s)) printf("括号配对正确");
	else  printf("括号配对错误");
}

bool Push(SqStack &s , char e)
{
	if(s.top - s.base >= s.stacksize ) //栈满
	{
		s.base = (char*)realloc(s.base , (s.stacksize+STACKINCREMENT ) *sizeof(char) )	;
		if(!s.base)  return false;
		s.top =  s.base + s.stacksize;
		s.stacksize += STACKINCREMENT;
	} 
	*s.top++ = e;
	return true;
}

bool Pop(SqStack &s , char &e) //出栈 
{
	if(s.top == s.base) return false;
	e = * --s.top;
	return true;
}

bool GetTop(SqStack s , char &e)  //取栈顶元素 
{
	if(s.top == s.base ) return false;
	e = *(s.top-1);
	return true;
}

bool InitStack(SqStack &s)  
{
	s.base = (char*)malloc(STACK_INIT_SIZE * sizeof(char));
	if(!s.base)   return false;
	s.top = s.base;
	s.stacksize = STACK_INIT_SIZE;
	return true;
}

bool  panDuan(char kuoHao[] , SqStack &s)
{
	char stack_top_value;
	char u ;//临时存放Pop出来的栈顶值 
	for(int i=0 ; i<8 ; i++)
	{
		char m = kuoHao[i];
		if(m == '(' || m == '[')
		{
			Push(s , m);
		}
		
		if(m == ')')
		{
			GetTop(s , stack_top_value);
			if(stack_top_value == '(')
			Pop(s , u );  
		}
		else
		{
		
			if(m == ']')
			{
				GetTop(s , stack_top_value);
				if(stack_top_value == '[')
				Pop(s , u );
			}
			else
			{
				return false;  //括号配对错误 
			}
		}
	}
	
	return true; // 括号配对正确 
}

运行结果:


括号匹配检测工具 目前的工作需要写大量的、很长的、内含很多括号的表达式,需要一个括号匹配检测工具,于是就自己做了一个,也发上来分享一下。 使用说明: 1.将要检查的表达式复制到“请将要检查的表达式复制到该文件.txt”文件内,覆盖其原有内容,并保存。 2.运行“括号匹配.exe”。然后程序就会显示括号匹配是否正确。 立即下载

相关推荐

检查一个算术表达式中的括号是否正确匹配。

设计算法: 检查存储在单链表中的算术表达式 s 所包含的括号—— “(” 与 “)” 、 “[” 与 “]” 、 “{” 与 “}”是否正确匹配; 1、 创建单链表 s,通过用户逐个字符输入,完成 s 的初始化。 2、 编写程序实现函数 Check,并输出检查结果。 3、 为增强程序的可读性,对程序中较难理解的语句要有准确、清晰的注释。 由教师随机给出测试数据,程序能够反馈括号是否匹配,如果不匹配,指出第一个不匹配所在位置

算法36-检查括号

算法

weixin_41479678的博客 257

c程序括号匹配检查.c

使用C语言实现括号匹配检查,对输入的一段文字进行排查,如果前置括号或者后置括号不存在,则指出改正,对于c语言入门的同学能够巩固所学知识,获得提升。

有效括号的检查

写的又臭又长,关键还是错的,我想利用括号索引进行比较,判断其关系正确与否。4,如果右括号找到匹配的后,就弹出对应的左括号,否则一个左括号会被检测多次。3,如果是左括号就存储在栈里,我对栈的理解就是一个弹夹,先进后出。我以后更新要随缘,感觉每天被课程追成死狗,有时写不完的作业。1,在for循环的条件里遍历数组,字符串等可以迭代的数据。1,for循环遍历字符串,浏览每个括号。1,栈的理解和应用,对应的成员函数。2)改进后的代码,用了栈stack。2,&&和||,逻辑关系的使用。,判断字符串是否有效。

2401_86679269的博客 550

从选卡到验证:CST仿真GPU加速全流程实战指南

本文详细介绍了CST仿真中GPU加速的全流程实战指南,从硬件选型到软件配置,再到性能验证和常见问题排查。通过对比专业卡与游戏卡的性能差异,提供硬件选型建议,并分享驱动安装、关键设置及CST软件配置的黄金法则,帮助用户显著提升仿真效率。

weixin_30650039的博客 394

Unity 2D精灵点击交互实现:从BoxCollider 2D到Event Trigger的完整指南

本文提供了Unity 2D精灵点击交互的完整实现指南。通过详细拆解BoxCollider 2D与Event Trigger两大核心组件的协同工作原理,手把手教你为Sprite Renderer添加点击、悬停等事件响应。文章包含从基础配置到进阶优化、性能调试的实战步骤,帮助开发者高效实现游戏世界内的对象交互,是Unity 2D开发的实用教程。

ansible6ops的博客 300

括号配对检测

描述 用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确,配对成功与否分别输出:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬ 配对成功,配对不成功‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬.

weixin_61316743的博客 765

Xilinx Vitis arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument

This problem may be a bugof version 2021.1 only. Unfortunately, I'm just currently using this version. After Build Project: Find where this Makefile is through "make: Leaving directory" information. For me, it is located atZynq_CPU_wrapper_hw_platfo...

Ayka的博客 6660

检查括号(,{,[ 是否匹配(栈的应用)

此时我们可以想象,当我们遇到左括号的时候把左括号按出现顺序压入栈,然后如果遇到右括号了就跟栈顶的左括号进行匹配,如果成功就没问题,然后把栈顶的左括号弹出,如果不匹配就直接结束报错,这里解释一下为什么要遇到的右括号要跟左边的栈顶比较,因为最晚出现的左括号是要最早闭合的,例如{(),如果先出现的右括号不能让栈顶的左括号闭合那就肯定是有问题的。该题目是字符串里面包含括号,我们其实可以把题目简化,我们只需要左右括号而已,所以我们可以创一个字符串来按顺序存储左右括号即可。st.pop()是弹出栈顶的元素。

2501_93357514的博客 258

Marin说PCB之LPDDR5的布线注意事项--01

以上就是本期所有内容了,有些是通用的LPDDR5的设计准则,有的是针对单板的设计规则,严格意义说是没有哪一种规则是完全适用的LPDDR5的 通用规则的,不同的单板可能板厚,板材,层数,SOC以及DDR的型号都是不同的,一般的做法就是严格按照SOC手册上的LPDDR5的要求加上仿真同事给的建议修改优化就好了,我们下期文章不见不散。我们知道想要做好一个LPDDR颗粒,需要考虑的是因素有很多例如,电源完整性,信号完整性,层叠的设计,布局的摆放,布线的合理规划,去耦电容的摆放等等。

weixin_45223454的博客 3161

FPGA数字下变频实战:用Vivado DDS IP核实现IQ采样与频率校正(附MATLAB仿真对比)

本文提供了一份基于Vivado DDS IP核实现FPGA数字下变频(DDC)的完整工程指南。详细阐述了IQ采样的原理、DDC链路构建、DDS频率校正的工程实现,并重点介绍了如何利用MATLAB搭建黄金参考模型进行全链路仿真与对比验证,分享了关键的调试技巧与性能优化建议。

t1u2v的博客 810

括号检查-

若字符串满足以下条件之一,则为无效字符串。一个整数,表示最大的括号深度。若字符串无效,则输出。输出括号的最大嵌套深度,若字符串无效则输出。该字符串有效,且最大嵌套深度为。该字符串有效,且最大嵌套深度为。

weixin_51265788的博客 198

【问题解决】解决 Python `PermissionError` 权限不足:文件/进程/端口全场景修复

本文总结了Python程序中常见的权限问题及解决方案,包括文件、进程和端口权限错误。文件权限问题通常由文件占用、权限不足或路径错误引起;进程问题多因权限不足或系统限制;端口问题则与端口占用、防火墙或特权端口相关。解决方案提供了详细的代码实现:文件权限管理器类(FilePermissionManager)包含检查权限(check_permission)、修复权限(fix_permission)、安全写入(safe_write)和安全删除(safe_delete)等方法,通过异常处理和临时文件等技术确保操作安全

博客 357

数据结构之栈的应用----C程序的括号配对检查

这周学完了严老师的栈及其应用。 已经对栈的应用有了一定的了解了,并且感觉到数据结构实在是很强大,它几乎可以解决我们生活中的大部分问题。 关于栈的基本常识,这里不做过多的解释,总之,其核心就是先进后出(FILO) 联想到这种模式我们就可以很容易的知道,栈可以有如下几种应用: 1、进制之间的转换 2、C程序的括号配对检查 3、迷宫求解问题 4、算术表达式求值 5、递归函数 .....

fengxiaoke_fxk的专栏 2389

量化 insider 爆料! 散户打板必亏?(打板必看!量化资金如何“隔日砸盘”收割散户)

量化开发 insider 爆料💥 散户追的涨停板📉,可能是机构故意做的陷阱!本文从技术视角拆解“涨停陷阱”,帮你看清市场真实逻辑🧠。

XiaoqiangClub的博客 449

MIKE水动力笔记5_建立水动力模型

前文已经讲了如何制作网格文件(.mdf文件),这一博文就讲如何建立水动力模型。

晏长街的博客 3万+

应用题_括号配对

括号配对检查检查表达式中的括号是否配对,如果配对,则返回true否则,返回false////////////////////////////////////////////////////////////// 源程序// 功能:检查表达式中的括号是否配对// 时间:21:35 2005-10-2// 最后修改时间:21:35 2005-10-2///////////////////////////

1260

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

检查公式括号配对

a)满足在字符串的任何位置处,其左边的左括号数不小于右括号数;b) 字符串中所有的左右括号数相等。   因此,可以采用栈的思想来匹配:遇到左括号入栈,遇到右括号出栈,直到栈为空,或字符串结束停止;字符串扫描结束时,栈也同时为空,则说明匹配。js如下: [code="javascript"]function checkBracket(algorithms){ ...

heroreh的博客 283

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

1.0 括号配对

学习1.0 字符串与算法 从练习题中总结整合的一些关于字符串的用法,以及解题思路分析中学习算法。 题目:现在,有一行括号序列,请你检查这行括号是否配对。 第一行输入一个数N 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 思路分析: 1.输入字符串奇数或者偶数为依据,简单分类一下配对问题(初学算法,不必急于解决问题,多对问题种类考虑尽量全面,再逐步深入,具体到每个问题) 2.括号最内部最小单元"()“or”[]"的一个括号整体开始删除,直到<1&g

weixin_51310066的博客 350

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

一个检查原代码括号配对的程序,栈的应用

/***write by liujun*/import java.io.*;public class Stack{ private char myStack[]; private int top; private int len; public Stack(int len) {  myStack = new char[len];  this.len = len;  top = -1; } publ

关注移动开发 4418

c语言输入括号配对成功输出1,用数组实现括号配对检查,输出不正确,请大家指点解决办法...

当前位置:我的异常网» C语言»用数组实现括号配对检查,输出不正确,请大家指点解用数组实现括号配对检查,输出不正确,请大家指点解决办法www.myexceptions.net网友分享于:2013-03-07浏览:19次用数组实现括号配对检查,输出不正确,请大家指点今天编了一个关于括号配对检查的小程序,可是输出老有错误。上网看到好多人都是用堆栈实现的,我是用数组来实现的。希望哪位大哥给看...

weixin_39766109的博客 114

南阳2--括号配对问题(栈)

括号配对问题 时间限制:3000ms | 内存限制:65535KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[",...

dixi7825的博客 121

括号配对问题(栈的操作)

第一次写博客不知道该写点什么,就准备记录一些关于数据结构(C语言)中栈的操作——初始化、判空、入栈、出栈、和栈顶元素。 括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0&lt;N&lt;=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符...

九二六四的博客 441

Source Insight出现parse too complex的问题

多半是因为代码中括号配对问题,检查代码。

爱,忠于内心的世界。 3755

括号配对问题(南阳oj)

括号配对问题 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0&lt;N&lt;=1000&lt;N&lt;=1000

厄尔尼诺的博客 538

1792: 括号配对问题

1792: 括号配对问题 时间限制: 3 Sec  内存限制: 64 MB 提交: 185  解决: 84您该题的状态:已完成 [提交][状态][讨论版] 题目描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0&lt;N&lt;=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串)...

小渣渣的博客 174
上一篇: 单链表的创建
下一篇: 基于c++的作业调度算法模拟
libingbojava
博客等级 码龄9年 64粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值