2302_79780475 2023-11-11 13:06 采纳率: 0%
浏览 6

#关于圆括号匹配的问题

输入一串字符,判断其中的圆括号是否匹配,除计算数量以外,怎么判断是一对

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-11 14:36
    关注

    【以下回答由 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语言程序可以判断输入字符中的圆括号是否匹配,并给出不匹配的位置。如果圆括号都匹配,程序将会输出"所有括号都匹配"。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月11日

悬赏问题

  • ¥15 爬取豆瓣电影相关处理
  • ¥15 手机淘宝抓清除消息接口
  • ¥15 C#无selenium
  • ¥15 LD衰减计算的结果过大
  • ¥15 用机器学习方法帮助保险公司预测哪些是欺诈行为
  • ¥15 计算300m以内的LD衰减
  • ¥15 数据爬取,python
  • ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
  • ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
  • ¥15 FOR循环语句显示查询超过300S错误怎么办