3.2 作业-括号匹配

基于微信小程序的答题系统 学习视频:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!5812)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! 阅读详情

1.问题实现

代码如下(示例):

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define STACK_MAX_SIZE 10

typedef struct CharStack {
	int top;
	char data[STACK_MAX_SIZE];
}*CharStackPtr;

void outputStack(CharStackPtr paraStack)
{
	for (int i = 0; i <= paraStack->top; i++) {
		printf("%c ", paraStack->data[i]);
	}
	printf("\r\n");
}

CharStackPtr CharStackInit()
{
	CharStackPtr resultPtr = (CharStackPtr)malloc(sizeof(struct CharStack));
	resultPtr->top = -1;

	return resultPtr;
}

void push(CharStackPtr paraStack, char paravalue)
{
	if (paraStack->top >= STACK_MAX_SIZE - 1) {
		printf("Cannot push element: stack full.\r\n");
		return;
	}

	paraStack->top++;

	paraStack->data[paraStack->top] = paravalue;
}

char pop(CharStackPtr paraStack)
{
	if (paraStack->top < 0) {
		printf("Cannot pop the element: stack empty.\r\n");
		return;
	}

	paraStack->top--;

	return paraStack->data[paraStack->top + 1];
}

void pushpopTest() {
	printf("----pushpopTest begins. ----\r\n");
	char ch;

	CharStackPtr tempStack = CharStackInit();
	printf("After initialization, the stack is: ");
	outputStack(tempStack);

	for (ch = 'a'; ch < 'm'; ch++) {
		printf("Pushing %c.\r\n", ch);
		push(tempStack, ch);
		outputStack(tempStack);
	}

	for (int i = 0; i < 3; i++) {
		ch = pop(tempStack);
		printf("pop %c.\r\n", ch);
		outputStack(tempStack);
	}

	printf("----pushpopTest ends. ----\r\n");
}

bool bracketMatching(char* paraString, int paraLength) {
	CharStackPtr tempStack = CharStackInit();
	push(tempStack, '#');
	char tempChar, tempPopedChar;

	for (int i = 0; i < paraLength; i++) {
		tempChar = paraString[i];

		switch (tempChar) {
		case '(':
		case '[':
		case '{':
			push(tempStack, tempChar);
			break;
		case ')':
			tempPopedChar = pop(tempStack);
			if (tempPopedChar != '(') {
				return false;
			}
			break;
		case ']':
			tempPopedChar = pop(tempStack);
			if (tempPopedChar != '[') {
				return false;
			}
			break;
		case '}':
			tempPopedChar = pop(tempStack);
			if (tempPopedChar != '{') {
				return false;
			}
			break;
		default:
			break;
		}
	}

	tempPopedChar = pop(tempStack);
	if (tempPopedChar != '#') {
		return false;
	}

	return true;
}

void bracketMatchingTest() {
	char* tempExpression = "[2 + (1 - 3)] * 4";
	bool tempMatch = bracketMatching(tempExpression, 17);
	printf("Is the expression '%s' bracket matching? %d \r\n", tempExpression, tempMatch);

	tempExpression = "( )  )";
	tempMatch = bracketMatching(tempExpression, 6);
	printf("Is the expression '%s' bracket matching %d \r\n", tempExpression, tempMatch);

	tempExpression = "()()(())";
	tempMatch = bracketMatching(tempExpression, 8);
	printf("Is the expression '%s' bracket matching? %d \r\n", tempExpression, tempMatch);

	tempExpression = "({}[])";
	tempMatch = bracketMatching(tempExpression, 6);
	printf("Is the expression '%s' bracket mtching %d \r\n", tempExpression, tempMatch);

	tempExpression = ")(";
	tempMatch = bracketMatching(tempExpression, 2);
	printf("Is the espression '%s' bracket matching %d \r\n", tempExpression, tempMatch);
}

void main()
{
	bracketMatchingTest();
}


2.输出结果

Is the expression '[2 + (1 - 3)] * 4' bracket matching? 1
Is the expression '( )  )' bracket matching 0
Is the expression '()()(())' bracket matching? 1
Is the expression '({}[])' bracket mtching 1
Is the espression ')(' bracket matching 0
1、电路分析知识全解析:从基础到实践应用 本博客全面解析电路分析知识体系,涵盖从基础的电压、电流、电阻概念到复杂的交流电路、瞬态分析和高级应用如滤波器与变压器等内容。适合电子技术专业学生和技术爱好者学习,提供详细的知识结构、学习路径、实践示例以及丰富的学习资源,包括计算机模拟工具Multisim和PSpice的使用指导。通过理论与实践结合,帮助学习者掌握电路分析的核心技能,为电子工程和电力系统等相关领域打下坚实基础。 阅读详情

相关推荐

OrangePi Kunpeng Pro 安装 ROS2 + Gazebo

OrangePi Kunpeng Pro 的优点很明显,内置openEuler,配备PD电源,做到开箱即用;板子设计也不错,风扇噪音不大,散热良好,昇腾芯片又确保小板子的性能,接口丰富是这类板子共同的优点,也很好的继承了下来,甚至还可以外接固态,可靠性大大提升。使用起来,哪怕不用openEuler的话,也可以很方便的刷Ubuntu来实现一些需要依赖的开发工作,这次没有跑AI模型,所以对算力的优势还没有很明显的感受,下次可以试一下yolo跑跑看。

Arcan 1826

栈的应用之括号匹配(作业)

【代码】栈的应用之括号匹配(作业)

2401_87657546的博客 217

硬件工程师必看:5种ESD保护电路设计实战解析(附电路图)

本文为硬件工程师深度解析5种实战ESD保护电路设计,涵盖TVS二极管、专用保护芯片、片上防护及高速射频场景方案。通过具体电路图,详解工作原理、选型要点及PCB布局黄金法则,重点强调ESD防护设计中的能量泄放路径管理与低阻抗实现,助力提升产品可靠性。

xk7n92h3p5m的博客 640

括号匹配算法 (数据结构作业)

题目链接     3.3 circle 3.3 circle   ★实验任务   最近 silchen 又发现了一个关于圆的有趣的问题:在圆上有 2n 个不同的点,按顺序排列, n=2 的时候如图:            silchen 用 m 条线段把这些点连接了起来(每个点保证只连一条线段),现在他想知道这样的连接这些线段是否相交,如果不相交输出“YES”,相...

JustNo 2697

告别拼音!用VSCode+Dosbox-X搞定汇编语言课程设计里的中文姓名显示

本文详细介绍了如何利用VSCode和Dosbox-X解决汇编语言课程设计中中文姓名显示的问题。通过配置开发环境、理解GB2312编码及正确使用汇编指令,学生可以告别拼音显示,实现中文字符的正确输出。文章还提供了完整的代码示例和常见问题排查方法,帮助读者快速掌握这一实用技能。

weixin_30872337的博客 425

10、现代统计方法:趋势面分析、薄板样条与广义线性模型

本文系统介绍了空间预测建模中的三种现代统计方法:趋势面分析(TSA)、薄板样条(TPS)和广义线性模型(GLM)。详细阐述了每种方法的原理、实现步骤、参数优化与预测评估,并结合R语言代码示例展示了在实际数据中的应用。文章还提供了方法对比流程图与土壤湿度预测案例,帮助读者根据数据特征选择合适模型,提升空间预测的准确性与可靠性。

play7的博客 158

数据结构第一次作业第4题(括号匹配)

括号匹配 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct stack { char data[51]; int top; } Stack; void push(Stack* S,char x); char pop(Stack* S); int main() { char input[51]; scanf("%s",input); int print[3]={1,

MysteriousL的博客 180

【个人成长笔记】在Ubuntu中安装RTL8188GU USB无线网卡驱动(Driver for Linux RTL8188GU)

这篇笔记提供了在Ubuntu系统中安装RTL8188GU无线网卡驱动的完整指南。主要内容包括:驱动程序的官方来源(Github链接)、详细安装步骤(通过git下载、编译安装等命令),以及将设备转换为USB网卡模式的关键指令。特别提醒每次开机都需要执行模式转换命令,因为设备默认会以U盘模式启动。文章以简洁的技术文档形式呈现,适合Linux用户快速查阅和操作。

yuhuasheng1997的博客 1828

数据结构作业 7 —— 括号匹配(栈的应用)

【代码】数据结构作业 7 —— 括号匹配(栈的应用)

2403_87341008的博客 454

笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

10 笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

w0shishabi的博客 1472

B.3【智能标注】:基于Labelstudio的UIE半监督深度学习的智能标注方案(云端版),提效。

Label Studio 所提供的 Machine Learning Backend 提供了一个比较灵活的辅助人工标注的框架,我们通过它确实可以加快 nlp 数据的标注Label Studio 的 enterprise 版本提供了 Active Learning 的流程,不过从其描述看这个流程并不完美,尤其是 fit 部分,由于 Label Studio 低估了「Train」所花费的时间,所以每次标注都自动训练的流程可能并不会那么顺滑(会在链接时候等待一段时间)

丨汀、的博客 1840

数据结构第七次作业:括号匹配

【代码】数据结构第七次作业:括号匹配。

spinage的博客 650

不藏了!Wireshark 命令、捕获、过滤器大全分享给你

Wireshark,这款广受欢迎的开源网络协议分析工具,堪称网络管理员、网络安全专家和网络爱好者的“显微镜”!它可以帮助我们捕获网络中的数据包,并提供详细的解码和分析能力。本文将为您全面剖析 Wireshark 的强大功能,从基础到高级,让你快速掌握这个神器!💡Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。

网络技术联盟站 728

《数据结构(A)》第3章作业

bjtu《数据结构(A)》第3章作业

weixin_62387695的博客 157

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

不使用栈简单实现括号匹配算法

  刚刚做数据结构作业时有这样一道书本习题,题目如下:   3.2 假设以I和O分别表示进栈和出栈操作,栈的初态和终栈均为空,进栈和出栈的操作序列可表示为仅由I和O组成的序列。   (1)下面所示的序列中哪些是合法的?   A. IOIIOIOO    B. IOOIOIIO    C. IIIOIOIO    D. IIIOOIOO   (2)通过对(1)的分析,写出一个算法判...

无名的代码小将 746

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

北航第四次作业——C程序括号匹配检查

北航第四次作业——C程序括号匹配检查

m0_74019378的博客 440

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

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

数据结构作业8——栈的应用(括号匹配)

代码如下int top;i ++) {*/*/return;}//Of if*/}//Of if}// Of popchar ch;// Pop.ch < 'm';ch ++) {// Pop.i < 3;i ++) {*/i++) {case '(':

nannannny的博客 635

括号匹配 (C语言栈的应用)

数据结构,利用顺序栈和C语言完成括号匹配

FF小迷糊吖~ 952

数据结构-括号匹配作业

该代码重在匹配,即检查要求数组的每一个元素,左括号就入栈,右括号就出栈检查上一个元素是否能够和它匹配,其他字符等通通跳过。

a5_1773的博客 295

数据结构作业之栈的应用--括号匹配

1)代码先在栈底压入一个‘#’,用于判断是否到达栈底,在最后要判断栈底是否为‘#’2)除了括号其他的字符数字都不会进入栈中。

2401_82406248的博客 253

数据结构作业7--栈的应用 -- 括号匹配

摘要: 括号匹配让人对栈的观感瞬间提升. 以后你还会被栈惊艳到.

2301_80117592的博客 462

数据结构与算法 作业7-括号匹配

括号匹配问题通过栈的简单操作即可高效解决,重点在于正确理解栈的特性和边界条件的处理。mapping = {')': '(', ']': '[', '}': '{'} # 右括号到左括号的映射。:遍历结束后,若栈为空,说明所有括号正确闭合;特性,确保每个右括号与最近未匹配的左括号正确配对。栈的天然特性(LIFO)与括号的嵌套逻辑完美契合。,最坏情况下(全为左括号)需存储所有字符。若栈顶左括号与当前右括号不匹配,返回。使用字典快速映射右括号到对应的左括号。若栈为空,说明无匹配的左括号,返回。

2501_91254115的博客 578

数据结构作业——括号匹配

实现小括号和中括号的匹配检测,并且标记未匹配的括号。 算法思想:利用堆栈储存左括号,当遇到右括号时,检测栈顶括号是否与该右括号的类型相同。 代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 128 //声明堆栈元素:储存左括号的类型和位置 struct bra...

liuzhaoze2000的博客 586

NKOJ P1507 做错的作业

问题描述小影(人名) 的数学作业错误百出. 老师:“你作业的表达式里面只有n个括号,怎么就写错了这么多?” “n那么大,都到300了。” 老师:“那第一个小题只有一个括号你都写错了,这怎么解释?你看,你就写了一个‘(’,明显漏掉了一个‘)’吧?” “这……”小影似乎很清楚的记得自己是写的“()”,可是现在怎么只剩下“(”了呢? 老师:“你看别人某某,写的多好?十道题都做对了。这样吧,我不看你的计算结果了,只看你的括号匹配得正不正确,你今天之内把你的括号修改正确就可以了……” “嘿嘿……我把括号全部划掉不就全

czy6666666的博客 358

[C语言、C++]数据结构作业:用链栈实现括号匹配

[C语言、C++]数据结构作业:用链栈实现括号匹配

Yhisken的博客 821

nyoj 2-括号匹配

今天真是十分十分十分。。。。的不爽!made!烦死了,烦死了,烦死了。。。 感觉做到现在自己根本一点长进都没有,今天在食堂又差点跟人家起冲突,上课忘带作业,明明很简单的题就是怎么都做不出,网购的书店家竟然发错货,乱七八糟一大堆的破事,mademademademademade。。。!!! 哎,仔细想想,老师说过,一类的题要做一百道才能说有点感觉,我这才做了十几道,大概是有些急于求成了吧,加上今天

今天天气不错 783
上一篇: 3.2汉诺塔作业
下一篇: 数据结构3.6--链队列
dev_cc_
博客等级 码龄3年 41粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值