c语言版数据结构(奇迹冬瓜)-栈实战(3)括号匹配的检测

数据结构c语言版栈的应用单括号匹配(实验报告) 输入一包含(和)的字符串,检测括号是否匹配(其中括号能嵌套括号),并输出括号是否匹配的信息(匹配,缺少左括号,缺少右括号)。 立即下载

//c语言版数据结构(奇迹冬瓜)-栈实战(3)括号匹配的检测

/*
初始化栈
初始化标志位
循环标志位不为1
{
   输入一个字符并判断是否为括号
   如果是<[{(则进栈
   如果是>]})则出栈
   {
      判断出栈的字符和输入的字符是否相等
	  {
	      相等则继续
		  否则标志位为0
	   }
   }
   判断栈空否
   {
      栈空则标志位为0
   }
}
判断栈空的情况
{
   栈空匹配
   否则不匹配
}
*/


//---------头文件----------
#include<stdio.h>
#include<stdlib.h>

//---------宏定义----------

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define TRUE 1
#define ERROR 0
#define OVERFLOW -2

//---------替换和结构体-----------

typedef int Bool;
typedef struct
{
	int *base,*top;
	int stacksize;
}SqStack,*Stack;

//--------函数列表--------
Bool InitStack(Stack s);
Bool StackEmpty(Stack s);
Bool Push(Stack s,char e);
Bool Pop(Stack s,char *e);

//--------主函数---------

void main()
{
	SqStack sq,*s=&sq;
	int flag=0;
	char ch,e;
	InitStack(s);
	while('\n'!=(ch=getchar()))
	{
		if('('==ch||'['==ch||'{'==ch||'<'==ch)
		{
			Push(s,ch);
		}
		if(')'==ch||']'==ch||'}'==ch||'>'==ch)
		{
			Pop(s,&e);
			if(('('==e&&')'==ch)||('{'==e&&'}'==ch)||('['==e&&']'==ch)||('<'==e&&'>'==ch))
			{
				flag=1;
			}
			else
			{
				flag=0;
			}
		}
	}
	if(1==flag&&StackEmpty(s))
	{
		printf("括号匹配!检测结束.\n");
	}
	else
	{
		printf("括号不匹配!检测结束.\n");
	}
	getchar();
	getchar();
}

//--------其余函数--------

Bool InitStack(Stack s)
{
	if(!(s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int))))
	{
		exit(OVERFLOW);
	}
	s->top=s->base;
	s->stacksize=STACK_INIT_SIZE;
	return TRUE;
}

Bool StackEmpty(Stack s)
{
	return s->base==s->top?TRUE:ERROR;
}

Bool Push(Stack s,char e)
{
	if(s->top-s->base>=s->stacksize)
	{
		if(!(s->base=(int *)realloc(s->base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(int))))
		{
			exit(OVERFLOW);
		}
		s->top=s->base+s->stacksize;
		s->stacksize+=STACKINCREMENT;
	}
	*(s->top++)=e;
	return TRUE;
}

Bool Pop(Stack s,char *e)
{
	if(s->base==s->top)
	{
		return ERROR;
	}
	*e=*(--s->top);
	return TRUE;
}


 

FPGA实战:用DDR3和乒乓操作解决视频帧撕裂问题(附Verilog代码) 本文详细介绍了如何利用DDR3内存和乒乓操作架构解决FPGA视频处理中的帧撕裂问题。通过多帧缓存原理、AXI接口配置和自适应乒乓操作设计,有效隔离读写操作,确保视频流稳定传输。文章包含Verilog代码实现和性能优化技巧,适用于工业相机、医疗影像等高速视频处理场景。 阅读详情

相关推荐

Windows 10下用vcpkg一键搞定libcurl开发环境(Code::Blocks 20.03配置指南)

本文详细介绍了在Windows 10系统下使用vcpkg工具快速配置libcurl开发环境的完整指南,特别针对Code::Blocks 20.03 IDE进行优化设置。通过vcpkg自动化管理依赖项,简化libcurl的安装与配置过程,帮助开发者高效搭建网络通信功能开发环境,并提供了常见问题解决方案和实际项目中的最佳实践。

weixin_28040125的博客 251

括号匹配编程题--python

#!/usr/bin/python #-*- coding: utf8 -*- def isMatched(inStr):     """         Judge whether the input match rules         @author: ken         >>>isMatched('{}{}(())')         >>>True    

yuquanmm的专栏 1202

华为P30/pro (ELE-AL00) 鸿蒙4.2降级 EMUI 9

分享

m0_52356707的博客 1万+

C语言实现检查括号匹配

从头到尾扫描字符串,对不同种类的括号,遇到开括号就入栈,遇到闭括号则检查是否与栈顶开括号类型相同,相同则出栈,否则报错括号不匹配。 #include "stdafx.h" #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; // 在start与end中搜索匹配 int fun(cha...

LearningNote 1万+

电脑版微信多开,最详细教程没有之一

首先桌面任意的位置右键新建文本文档输入如下代码: TASKKILL /F/IM WECHAT.EXE start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" ...

大超子 4393

微机原理与接口技术第六版周荷琴课后习题答案及解析(期末重点)

第二章 1.8086/8088CPU可直接寻址多少个内存(字节)单元?多少个I/O端口?它们的外部数据总线各有多少根? 8086/8088CPU使用的是20位地址总线,因此可以直接寻址2的20次方个内存单元(即1,048,576),每个单元大小为1字节,因此可以直接寻址2的20次方个字节的内存。 8086/8088CPU有64K个I/O端口,每个端口占用1字节的地址空间,因此可以直接寻址6...

Wmicheng的博客 1万+

字符串括号匹配检测

题目 输入一行字符串包含(),如果匹配成功,返回0;否则返回字符串,并在未匹配的括号下面做标记(用A表示箭头指向上面),显示错误信息。例如: 输入: a=1+(4*7))/(8+8) 输出: a=1+(4*7))/(8+8) A 没有匹配的左括号 ...

zzyczzyc的博客 1270

单反相机物镜设计[DG-10]

REAR(要打在像面,操作数要找像面对应位置15):以透镜单位表示的真实光线径向坐标,波长由Wave定义,参见“Hx、Hy、Px和Py”。最小玻璃厚度最小不能小于semi-dia的1/10,要根据layout看有没有过厚过薄,反复调节。PROD:两个操作数的乘积(操作#1 X操作#2)。3x4就是57.3x0.41=23.5。拦光一般在第一面和最后一面操作,减少边缘无用光线。光阑面与镜面贴近,要调距离,同时设置光阑像差。后截距是指从镜头后表面到焦点的距离。CONS:弧度转为角度。镜头相互嵌入,有错误。

weixin_72050316的博客 600

【数据结构】括号匹配的检验C语言

算法 算法: -遇到普通字符忽略 遇到左括号入栈 遇到右符号 从栈中弹出栈顶符号,比配 匹配成功,继续扫描 匹配失败,停止,报错 结束: 所有字符扫描完毕,栈为空:成功 匹配失败或扫描完毕,但是栈不为空:失败 代码 // // Created by xuehu96 on 2019-08-09. // #include <stdio.h> #include "../linkst...

xuehu96的博客 2141

深度强化学习在足式机器人中的应用 (一):基础原理与仿真环境

我们将首先深入探讨其背后的核心挑战与技术栈,然后详细推导机器人学和强化学习的基本数学原理,特别是剖析在机器人控制领域表现卓越的PPO算法。下面的独立Python脚本展示了Isaac Gym的基本API用法,加载一个Go1机器人(假设URDF已准备好),并让它执行一个简单的预设动作(正弦波运动),以此来熟悉仿真流程。:代码的核心是直接操作GPU上的PyTorch张量,避免了CPU和GPU之间的数据拷贝,这是实现高性能的关键。:所有计算(如伪策略中的正弦波计算)都应该是向量化的,一次性为所有。

VectorShift的博客 228

CT探测器普遍采用“星形拓扑+多ADC模组”架构的TDC(时间数字转换器)设计方案

本文提出一种基于TDC反馈机制的CT探测器时钟同步方法,通过延时测量、偏差计算和动态补偿三步硬件流水线,实现高精度同步。系统采用Xilinx Kintex UltraScale FPGA内置CARRY8进位链构建3.5ps分辨率的TDC,结合多级比较器和延迟单元,形成闭环反馈控制。实验表明,在512通道、1.28m传输距离下,同步精度稳定在10ps以内,较传统方案提升两个数量级,并能动态补偿干扰抖动。该方案解决了传统方法在CT旋转腔体环境下精度不足的问题,为下一代超高清CT提供了有效的时钟同步解决方案。

whm128的博客 276

括号匹配-Python

题目: 输入多组数据,左边括号匹配不上,用“I”标记为 ,右边括号匹配不上用“?”标记 输入: ((((jei)fr)? 输出: ((((jei)fr) II 输入: )))() 输出 )))() ??? 思路就是使用Python的列表,模拟堆栈,入栈出栈,使用列表的追加和remove等方法替代 def kuohao(s): a = [] mark = [] ...

sunny的博客 2519

DeerFlow 系列教程 第十四篇 | IM 渠道集成——让 DeerFlow 接入飞书、企微、Slack、Telegram

DeerFlow 系列教程 第十四篇本篇教程继续,全面剖析 DeerFlow 的 IM 渠道集成方案。我们将深入理解 Channel 抽象层设计、MessageBus 消息总线机制、ChannelManager 调度循环、四大 IM 平台(飞书、企业微信、Slack、Telegram)的适配实现,以及从 IM 消息到 Agent 响应再到 IM 回复的完整消息流转过程。

weixin_43674738的博客 418

括号匹配(java)

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。输入格式:输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。输出格式:如果括号配对,输出yes,否则输出no。输入样例1:sin(10+20) 输出样例1:yes 输入样例2:{[}] 输出样例2:no程序代码:import j...

qq_35989000的博客 2256

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

7-1 括号匹配检测

给出一串包含 ( 、 ) 、[ 和 ] 的字符串,字符串在以下三种情况下为合法的: 1)字符串为空; 2)如果A和B都是合法的,那么AB也是合法的; 3)如果A是合法的,那么(A)和[A]也是合法的。 试判断输入的字符串是否合法。 输入格式: 输入包括一串由若干个 ( 、 ) 、 [ 或 ] 组成的字符串,字符串长度不超过100。 输出格式: 如果该字符串合法,输出“Yes”;否则输出“No”。 ...

qq_45550552的博客 1301

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

括号匹配的检验

表达式中含有两种括号’( )‘和’[ ]’,其嵌套顺序随意,但是必须能对等互补,即’ ( [ ( ) ] ) ‘为正确格式,’ ( [ ) ] ( '为错误格式 解如下---------------------------------------------- 链栈函数: #include <stdio.h> #include <stdlib.h> #include &lt...

双手敲键盘 531

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C语言数据结构之利用栈进行括号匹配的检验

括号匹配的检验:    eg: [([][][)]]    不匹配        [([][])] 匹配思路:   0x0.首先建立两个栈,并对其初始化      0x1.对表达式进行遍历,将相邻两个不能匹配的入栈到栈A,然后检测栈空间A是否为偶数,如果是表明有存在的可能,如果不是则提示不匹配。0x2.检测栈空间A是否为偶数,如果是表明有存在的可能,如果不是则提示不匹配,遍历栈A,将不匹配的入栈...

bool的博客 8563

MFC与坦克大战系列(奇迹冬瓜)---chapter3(坦克属性定义与坦克的平滑移动)

今天我们继续坦克大战系列。我将沿用chapter2的代码继续为大家讲解。由于计划的修订第三节先完成我方坦克的移动。主要的操作流程如下: (一)首先打开上一节的代码,然后在资源解决方案中头文件和主文件的地方添加程序要自己定义的坦克的类和方法。 主要操作位右键头文件->头文件->新建项->.h文件 命名为Thing 在Thing.h里面添加的代码如下 附图。 #include "stdafx.

runner2012的专栏 7389

MFC与坦克大战系列(奇迹冬瓜)---chapter2(photoshop与TransparentBlt---快速生成背景与透明位图处理)

今天继续MFC与坦克大战系列.做程序是要有团队合作。毕竟大多数程序员不可能做到美工和程序都精通。但是只有一个人的时候。就需要快捷的生成比较看的过去的图片供游戏所需。就拿坦克大战这个游戏程序来说。刚开始构思的时候就需要考虑到它的扩展性。所以在做坦克大战之前首先要做的就是地图编辑器。那么既然是个坦克大战。直白的说各种障碍该有吧、草坪、沙丘、海水、树木等。原来先用java写过一个地图编辑器先试验一下。之

runner2012的专栏 6630

VC开发圣诞程序雪花飞舞的世界

又到一年圣诞。为了烘托气氛。在两天前。写了个圣诞的小程序。 首先这个程序用到比较多的知识点 众所周知。一般情况下在MFC类库里进行png的贴图都有点麻烦 因为MFC一般用bmp格式的贴图。 于是我采用GDI的贴图形式贴png图 采用分层窗口,透明处理,以及鼠标穿透来使窗口透明,界面变到桌面 本来可以采用定时器来进行雪花的时间设定。但是为了更好的控制。我采用了一条线程来处理 自设一个I

runner2012的专栏 5989

GDI VC++重绘控件做的音乐播放器

用GDI重绘控件做的播放器。播放MP3格式的音乐。音乐部分用MCI接口。控件部分进行了自绘。 源码暂时在优化。还有小功能没完善。比如歌曲列表歌曲的存储。不用没关闭打开一次就要添加一次。比如歌词同步显示。还有播放模式还没做。就只有顺序播放模式。 等功能完善源码优化后。在年后放出代码。谢谢大家支持。放出程序。大家可以先看看小样。 开发语言VC++/MFC 开发环境VS2010 全

runner2012的专栏 5951

MFC与坦克大战系列(奇迹冬瓜)---chapter4(坦克总程序代码)

今天是圣诞节。祝大家圣诞快乐。因为今天在尝试写个小的圣诞程序。进度如下。无法控制雪花的路径。 今天会为大家发放整个坦克大战的代码。本来计划再用两节结束的。但是快要期末考试了。等过了这阵。会为大家呈现新的游戏。现在把整个游戏代码发给大家参考。 链接如下。不要积分。 可能我在操作的时候把rc资源有点损坏。可能造成vc打不开的问题。但是主要代码可以用记事本打开。 再次截图 开场动画1

runner2012的专栏 5450

(游戏编程-01)MFC版坦克大战(奇迹冬瓜)

经过二次整合 重新放出MFC框架下的坦克大战 采用小窗口 多线程 双缓冲 动画帧化 碰撞检测 接口封装 混音 事件延迟等 力求做到代码与美工的双向化

runner2012的专栏 5345

c语言版数据结构(奇迹冬瓜)-串(定长顺序存储各项操作)

//-----头文件------ #include #include //------宏定义------ #define MAXSTRLEN 255 #define OVERFLOW -2 #define TURE 1 #define ERROR 0 //-------类型名替换-------- typedef unsigned char SString[MAXSTRLEN+1]; typed

runner2012的专栏 5108

c语言版数据结构(奇迹冬瓜)-队列实战(1)离散事件模拟(银行排队)

//c语言版数据结构(奇迹冬瓜)-队列实战(1)离散事件模拟(银行排队) //------头文件--------- #include #include #include //-------宏定义--------- #define TURE 1 #define ERROR 0 #define OVERFLOW -2 //------替换及结构体------ typedef int Boo

runner2012的专栏 4856

C编程解线性代数二阶三阶矩阵(奇迹冬瓜)

(一) 小编语     大学数学三大基础:概论,线性,高数,用计科系软件角度运用数学观点理论编写程序来解决作业是一个极富创造力的工程,现在就线性代数第一章的理论来进行程序(c基础语言)的编写以求达到简化作业的目的,当然,最终目的还是为了睡个好觉,首先进行这个课题的理论积累。 (二)     二阶行列式理论基础     二阶行列式推导过程:     ①a11x1+a12x2=b1

runner2012的专栏 4373
上一篇: c语言版数据结构(奇迹冬瓜)-栈实战(2)整数进制转换<10进制到2,8,16进制>
下一篇: c语言版数据结构(奇迹冬瓜)-栈实战(4)表达式求值
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值