输入一串字符,判断其中的圆括号是否匹配,除计算数量以外,怎么判断是一对
1条回答 默认 最新
关注
【以下回答由 GPT 生成】
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char bracket; int position; } Bracket; typedef struct { Bracket *array; int size; int capacity; } BracketStack; // Initialize the stack void initStack(BracketStack *stack, int capacity) { stack->array = (Bracket *)malloc(capacity * sizeof(Bracket)); stack->capacity = capacity; stack->size = 0; } // Push an element onto the stack void push(BracketStack *stack, char bracket, int position) { if (stack->size < stack->capacity) { stack->array[stack->size].bracket = bracket; stack->array[stack->size].position = position; stack->size++; } } // Pop an element from the stack void pop(BracketStack *stack) { if (stack->size > 0) { stack->size--; } } // Check if the stack is empty int isEmpty(BracketStack *stack) { return (stack->size == 0); } // Check if the input string has matching brackets void checkMatchingBrackets(char *input) { BracketStack stack; initStack(&stack, strlen(input)); for (int i = 0; input[i] != '\0'; i++) { if (input[i] == '(') { push(&stack, '(', i); } else if (input[i] == ')') { if (isEmpty(&stack)) { printf("Unmatched right parenthesis at position %d\n", i); } else { pop(&stack); } } } while (!isEmpty(&stack)) { printf("Unmatched left parenthesis at position %d\n", stack.array[stack.size - 1].position); pop(&stack); } if (isEmpty(&stack)) { printf("All parentheses are matched\n"); } } int main() { char inputString[] = "((a+b)+(c-d))"; checkMatchingBrackets(inputString); return 0; }
这个C语言程序可以判断输入字符中的圆括号是否匹配,并给出不匹配的位置。如果圆括号都匹配,程序将会输出"所有括号都匹配"。
【相关推荐】
- 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7711523
- 你也可以参考下这篇文章:用指向函数的指针数组编写一个菜单程序,使得选择菜单的某一功能后, 程序将调用相应的函数来完成该功能
- 您还可以看一下 郑逊敏老师的抖音快手短视频自媒体制作引流运营兼职创业赚钱盈利实战教程课程中的 巧妙借势热点,实现快速涨粉小节, 巩固相关知识点
- 除此之外, 这篇博客: 简单编程题中的 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 爬取豆瓣电影相关处理
- ¥15 手机淘宝抓清除消息接口
- ¥15 C#无selenium
- ¥15 LD衰减计算的结果过大
- ¥15 用机器学习方法帮助保险公司预测哪些是欺诈行为
- ¥15 计算300m以内的LD衰减
- ¥15 数据爬取,python
- ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
- ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
- ¥15 FOR循环语句显示查询超过300S错误怎么办