当前位置:首页 > 行业动态 > 正文

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

在C语言中,判断括号是否配对是编程的基本技能之一,为了解决这个问题,我们可以使用栈(Stack)这种数据结构,栈是一种后进先出(LIFO)的数据结构,它只允许在栈顶插入和删除元素,在这个问题中,我们可以遍历输入的字符串,遇到左括号就入栈,遇到右括号就出栈并检查栈顶元素是否与当前右括号匹配,如果匹配成功,继续处理下一个字符;如果不匹配或者栈已空,说明括号不配对,如果栈为空,说明所有括号都已配对。

下面是一个使用C语言实现的判断括号配对的程序:

#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] != '
0