c语言判断圆括号是否匹配

在C语言中,判断括号是否配对是编程的基本技能之一,为了解决这个问题,我们可以使用栈(Stack)这种数据结构,栈是一种后进先出(LIFO)的数据结构,它只允许在栈顶插入和删除元素,在这个问题中,我们可以遍历输入的字符串,遇到左括号就入栈,遇到右括号就出栈并检查栈顶元素是否与当前右括号匹配,如果匹配成功,继续处理下一个字符;如果不匹配或者栈已空,说明括号不配对,如果栈为空,说明所有括号都已配对。,下面是一个使用C语言实现的判断括号配对的程序:,程序首先定义了一个栈结构体
Stack,包含一个数组
data用于存储栈内元素,以及一个整数
top表示栈顶位置,接着定义了
push
pop函数,分别用于向栈中压入元素和从栈中弹出元素。
is_matching函数用于判断两个括号是否匹配。
is_parentheses_balanced函数是主要的实现函数,它接收一个字符串参数,遍历字符串中的每个字符,遇到左括号就入栈,遇到右括号就出栈并检查是否匹配,如果栈为空,说明所有括号都已配对,返回
true;否则返回
false。,在
main函数中,我们定义了一些测试用例,并调用
is_parentheses_balanced函数判断它们是否平衡,程序输出每个测试用例的结果,包括序号、测试用例和结果(平衡/不平衡)。, ,#include <stdio.h> #include <stdbool.h> #include <string.h> #define MAX_SIZE 100 typedef struct { char data[MAX_SIZE]; int top; } Stack; void push(Stack *stack, char value) { if (stack>top == MAX_SIZE 1) { printf(“Stack Overflow! “); return; } stack>data[++stack>top] = value; } bool pop(Stack *stack, char *value) { if (stack>top == 1) { printf(“Stack Underflow! “); return false; } *value = stack>data[stack>top]; return true; } bool is_matching(char left, char right) { return (left == ‘(‘ && right == ‘)’) || (left == ‘[‘ && right == ‘]’) || (left == ‘{‘ && right == ‘}’); } bool is_parentheses_balanced(const char *str) { Stack stack; stack.top = 1; for (int i = 0; str[i] != ‘’; i++) { if (str[i] == ‘(‘ || str[i] == ‘[‘ || str[i] == ‘{‘) { push(&stack, str[i]); } else if (str[i] == ‘)’ || str[i] == ‘]’ || str[i] == ‘}’) { char value; if (!pop(&stack, &value)) { return false; } if (!is_matching(value, str[i])) { return false; } } } return stack.top == 1; } int main() { const char *test_cases[] = {“()”, “([{}])”, “({[}]})”, “([)]”, “([{])”, “({)}[“, “[[[]]]”, “{{[[(())]]}}”}; for (int i = 0; i < sizeof(test_cases) / sizeof(test_cases[0]); i++) { printf(“Test case %d: %s > %s “, i + 1, test_cases[i], is_parentheses_balanced(test_cases[i]) ? “Balanced” : “Not Balanced”); } return 0; },

原创文章,作者:admin,如若转载,请注明出处:https://www.vaicdn.com/news/42178.html

(0)
adminadmin
上一篇 2024 年 4 月 14 日
下一篇 2024 年 4 月 14 日

相关推荐

  • c语言中除怎么表示什么

    在c语言中,除法操作符是“/”,它用于执行两个数的除法运算,如果你有两个整数a和b,你可以使用表达式“a / b”来计算它们的商。,以下是一些关于C语言中除法操作符的详细解释和使用…

    2024 年 4 月 14 日
  • 香港集成中心

    香港集成服务器:提升网络性能的理想选择,引言,,随着企业对数据处理和在线服务的需求不断增长,选择合适的服务器解决方案变得尤为重要,香港集成服务器由于其地理位置、高速网络连接以及先进…

    2024 年 4 月 14 日
  • 服务器多个域名

    在当今互联网时代,多域名多服务器地址的优化使用已成为许多企业和开发者关注的焦点,通过合理地配置和管理多个域名和服务器地址,可以有效地提高网站的访问速度、稳定性和安全性,从而为用户提…

    2024 年 4 月 13 日
  • 如何连接帆软报表客户端到远程服务器 (帆软报表客户端连接远程服务器)

    帆软报表(FineReport)是一款功能强大的报表工具,广泛应用于数据分析与业务报告领域,在企业信息化过程中,往往需要将报表客户端连接到远程服务器上,以便实现数据集成、报表管理和…

    2024 年 4 月 13 日
  • vps怎么搭建

    vps(Virtual Private Server,虚拟专用服务器)是一种在一台物理服务器上通过虚拟化技术分割出的多个相互独立的虚拟服务器,每个VPS都具有独立的操作系统、内存、…

    2024 年 4 月 13 日
  • 使用日本服务器进行日本本地电视节目录制的操作和所需配置

    随着互联网的发展,越来越多的人选择在家中观看日本本地电视节目,由于地域限制,我们可能无法直接观看到这些节目,为了解决这个问题,我们可以使用日本服务器进行日本本地电视节目录制,本文将…

    2024 年 4 月 13 日
  • 服务器上的散热结构是什么

    服务器上的散热结构是为了确保服务器在长时间运行过程中,能够保持稳定的工作状态,防止因过热而导致的性能下降甚至硬件损坏,随着科技的发展,服务器的散热技术也在不断进步,目前常见的散热结…

    2024 年 4 月 14 日
  • 新加坡租用云服务器

    新加坡租服务器价格分析,新加坡作为全球重要的金融中心之一,其数据中心和服务器租赁市场发展成熟,提供多样化的服务,下面我们将详细解析新加坡服务器租赁市场的几个关键方面。, ,数据中心…

    2024 年 4 月 14 日
  • iis创建站点

    iis新建站点如何测试,在Windows操作系统中,IIS(Internet Information Services)是一个非常重要的组件,它负责处理Web请求和提供动态内容,本…

    2024 年 4 月 13 日
  • 电信虚拟主机如何使用

    电信虚拟主机,也被称为虚拟服务器或VPS(Virtual Private Server),是一种利用虚拟化技术在物理服务器上划分出的多个独立运行环境,每个虚拟主机都可以拥有独立的操…

    2024 年 4 月 14 日