C语言栈实现就近匹配原则

//main.c
#include<stdio.h>
#include"linklist.h"
#include"LinkStack.h"
#include<string.h>
#include<stdlib.h>
int main_1(void)
{int i = 0;int arr[10];LinkStack* stack = NULL;//创建栈stack = SeqStack_Create();/*判断栈创建的是否成功*/if (stack == NULL){return -1;};/*向栈中添加元素*/for (int i = 0; i < 5; i++){arr[i] = i + 1;SeqStack_Push(stack, &arr[i]);}/*获取栈的尺寸*/printf("栈的尺寸为:%d\n", SeqStack_Size(stack));/*获取栈顶元素*/printf("栈顶元素为:%d\n", *((int*)SeqStack_Top (stack)));//删除栈中的元素while (SeqStack_Size(stack)>0){int* temp =(int*) SeqStack_Pop(stack);printf("temp此时的值为:%d\n", *temp);}/*销毁栈*/SeqStack_Destroy(stack);return 0;
}
/*扫描代码*/
int isleft(const char* code)
{int result = 0;switch (*code){case '<':case'(':case'[':case'{':result = 1;break;default:result = 0;break;}return result;
}
int isRight(const char* code)
{int result = 0;switch (*code){case'>':case'}':case']':case')':result = 1;break; default:result = 0;break;}return result; 
}
int MatchChar(char tmp_char_1, char tmp_char_2)
{int result = 0;switch (tmp_char_1){case '<':result = (tmp_char_2 == '>') ;break;case'{':result = (tmp_char_2 == '}') ;break;case'[':result = (tmp_char_2 == ']') ;break;case'(':result = (tmp_char_2 == ')') ;break;default:result = 0;break;}return result;}
int scanner(const char* code)
{LinkStack* stack = NULL;stack = SeqStack_Create();char* tmp_char_1;char* tmp_char_2;int result;while (code!= NULL){tmp_char_1 = code;if (isleft(code)){SeqStack_Push(stack,(void*)tmp_char_1);}if (isRight(code)){tmp_char_2 = (char*)SeqStack_Pop(stack);/*匹配match*/if (!(MatchChar(*tmp_char_2, *tmp_char_1))||tmp_char_2 ==NULL){printf("匹配失败");}else{break;}}code++;}if (SeqStack_Size(stack)!= 0){printf("Sorry error");}else{printf("Successful match");}
}
int main_2(void)
{const char* code = "#include <stdio.h> int main() { int a[4][4]; int (*p)[4]; p = a[0]; return 0;} ";scanner(code);
}
int main(void)
{int return_num;return_num = main_2();return return_num;
}

//伪代码

创建栈;
为栈分配内存;
while(扫描的字符串非空)
{if(该字符为普通字符){}if(该字符为左括号){左符号压入栈}if(该字符为右括号){左符号弹出栈}if(左符号与右符号匹配){继续}else(匹配不成功){报错停止循环}
}
//判断是否扫描完成全部字符串
//if(stack.size == 0)
{匹配成功}
else
{匹配失败,报错}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万字讲解新一代分布式任务调度框架Power-job

1、简介 Power-Job 的设计目标是成为企业级的分布式任务调度平台&#xff0c;整个公司统一部署调度中心 power-job-server&#xff0c;旗下所有业务线应用只需要依赖 power-job-worker 即可接入调度中心获取任务调度与分布式计算能力。 Power-job官方网址&#xff1a;http:/…

链动2+1模式:月流水6000万是怎么做到的?

一个好的企业往往只需要最简单的营销方式。当我们面对当今的商业市场&#xff0c;琳琅满目的商业模式&#xff0c;应接不暇的营销方案&#xff0c;我们一定会举足无措的不知道怎么选择。因为一个好的公司或企业&#xff0c;一定要有一个十分经得起推敲的模式来面对消费者。 那么…

失眠了,感谢技术人对“Spring Cloud Alibaba实战派的支持”

笔者从2015年开始接触Spring Boot&#xff0c;2017年开始接触Spring Cloud&#xff0c;到现在的Spring Cloud Alibaba已经整整快7个年头了&#xff0c;从2012年开始接触Java到现在已经整整10年了。 这里并没有倚老卖老的意思&#xff0c;只是想说作为一个纯碎的技术人&#xf…

Gin 框架之Cookie与Session

文章目录 一、Cookie和Session的由来二、Cookie简介1. 什么是Cookie2. Cookie规范3. 安全性4. Cookie 关键配置 三、Session简介1. 什么是Session2. Session 安全性3. 如何让客户端携带 sess_id 四、使用 Gin 的 Session 插件4.1 介绍4.2 基本使用 五、 session与store5.1 会话…

「优选算法刷题」:找到字符串中所有字母异位词

一、题目 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s "cbaebabacd", …

LeetCode刷题——55. 跳跃游戏(HOT100)

✊✊✊&#x1f308;大家好&#xff01;本篇文章将较详细介绍贪心相关的题目55. 跳跃游戏&#xff0c;提供两种解法。代码语言为&#xff1a;C代码&#x1f607;。 &#x1f3a1;导航小助手&#x1f3a1; 55. 跳跃游戏&#x1f512;1、题目&#xff1a;☀️2、解法一&#xff1…

Win10 打开文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样

环境: Win10 专业版 加密客户端环境 问题描述: Win10 打开桌面word文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样,只有蓝色圈变大没有鼠标指针出现圈卡着不会动,和那些有鼠标箭头加小蓝色圈不一样 解决方案: 某网上查看的,还是要自己排查…

linux 更新镜像源

打开终端&#xff0c;备份一下旧的 源 文件&#xff0c;以防万一 cd /etc/apt/ ls sudo cp sources.list sources.list.bak ls然后打开清华大学开源软件镜像站 搜索一下你的linux发行版本&#xff0c;我这里是ubuntu发行版本 点击这个上面图中的问号 查看一下自己的版本号&a…

MySQL复合查询解析

&#x1f388;行百里者半九十&#x1f388; &#x1f388;目录&#x1f388; 概念多表查询自连接子查询单行子查询多行子查询in关键字all关键字any关键字 多列子查询在from中使用子查询合并查询unionunion all 总结 概念 之前我们很多的查询都只是对于单表进行查询&#xff0c…

飞书修改不了名称?飞书如何修改名称,修改昵称

飞书如何修改名称 点击编辑信息 在这里修改姓名就可以啦

Day31 46全排列 47全排列II 回溯去重tips 51N皇后 37解数独

46 全排列 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 排列问题与组合问题的不同之处就在于&#xff0c;没有startIndex&#xff0c;同时需要设置一个used数组…

Linux———netstat命令总结详解(狠狠爱住)

netstat 命令&#xff1a; 是一个常用的网络工具&#xff0c;在 Linux 系统中用于查看网络连接、路由表、网络接口统计信息等。通过 netstat 命令&#xff0c;你可以获取当前系统中网络相关的各种信息。 基本语法&#xff1a; netstat [OPTIONS] 其中 OPTIONS 是选项&#…

tp6框架中Http类 请求的header、body参数传参 及post、file格式

引入Http类&#xff1a; 在需要使用的地方引入Http类&#xff1a; use think\facade\Http; GET请求示例&#xff1a;$response Http::get(https://example.com/api/resource); 设置Header参数&#xff1a; $headers [ Authorization > Bearer YourAccessToken, Conte…

什么是站群服务器?

网站群服务器是管理多个网站的强大工具&#xff0c;可以帮助站长轻松管理和维护多个网站&#xff0c;提高网站运营效率。在本文中&#xff0c;我们将讨论站点组服务器的优势&#xff0c;以及为什么它是网站管理员不可或缺的工具。 介绍站群服务器 网站群服务器是一个集中管理…

Ant Design Vue上传多个图片

模板代码&#xff1a; 定义变量&#xff1a; 文件限制的函数&#xff1a; 上传的函数&#xff1a; 样式函数&#xff1a; 完整代码&#xff1a; <template><div class"dialog-upload" v-if"showUploadDialog"><div class"dialog-uplo…

【PIE-Engine 数据资源】全球 10 米土地覆盖产品 (ESA-2020)

文章目录 一、 简介二、描述三、波段四、示例代码参考资料 一、 简介 数据名称全球 10 米土地覆盖产品 (ESA-2020)时间范围2020年空间范围全球数据来源ESA WorldCover project 2020代码片段var imagespie. ImageCollection (“ESA/WORLD_COVER_2020”) 二、描述 全球 10 米土…

【知识---c++中chrono头文件中的含有的有关时间的函数】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言auto start std::chrono::system_clock::now();auto end std::chrono::system_clock::now();std::chrono::duration_cast<std::chrono::milliseconds>(…

nvm, node.js, npm, yarn 安装配置

文章目录 nvm 安装node.js 安装npm yarn 配置 nvm 安装 nvm 是一个 node.js 管理工具&#xff0c;可以快捷下载安装使用多个版本的node.js linux 命令行输入&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashwget -qO- https…

主机自动重启或自动关机故障

公司有两台品牌机&#xff0c;使用约1年半&#xff0c;最近频繁出现自动重启或自动关机现象。 排除插线板、电源线等电源的问题&#xff0c;拆机查看。 故障后的主机拆开后&#xff0c;先摸了一下散热片&#xff0c;并不烫手。 仔细查看内部&#xff0c;排线规整&#xff0c…

base64编码与图片之间相互转换

题记&#xff1a; Base64是网络上最常见的用于传输8Bit字节码的编码方式之一 1、将base64转换成图片 <img src"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0 DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg&quo…