c语言栈的括号匹配算法程序
    C语言栈的括号匹配算法程序。
c语言算法书籍    在编程中,括号匹配是一个常见的问题,特别是在处理字符串和表达式的时候。括号匹配算法可以用来检查一个字符串中的括号是否匹配,即左括号是否有相应的右括号与之匹配。
    在C语言中,我们可以使用栈来实现括号匹配算法。栈是一种后进先出(LIFO)的数据结构,非常适合用来处理括号匹配的问题。
    下面是一个简单的C语言程序,实现了括号匹配算法:
    c.
    #include <stdio.h>。
    #include <stdlib.h>。
    #define MAX_SIZE 100。
    typedef struct {。
        char items[MAX_SIZE];
        int top;
    } Stack;
    void init(Stack s) {。
        s->top = -1;
    }。
    void push(Stack s, char c) {。
        if (s->top == MAX_SIZE 1) {。
            printf("Stack overflow\n");
            exit(1);
        }。
        s->items[++s->top] = c;
    }。
    char pop(Stack s) {。
        if (s->top == -1) {。
            printf("Stack underflow\n");
            exit(1);
        }。
        return s->items[s->top--];
    }。
    int isEmpty(Stack s) {。
        return s->top == -1;
    }。
    int isMatchingPair(char left, char right) {。
        if (left == '(' && right == ')') return 1;
        if (left == '{' && right == '}') return 1;
        if (left == '[' && right == ']') return 1;
        return 0;
    }。
    int isBalanced(char exp) {。
        Stack s;
        init(&s);
        for (int i = 0; exp[i] != '\0'; i++) {。
            if (exp[i] == '(' || exp[i] == '{' || exp[i] == '[') {。
                push(&s, exp[i]);
            } else if (exp[i] == ')' || exp[i] == '}' || exp[i] == ']') {。
                if (isEmpty(&s) || !isMatchingPair(pop(&s), exp[i])) {。
                    return 0;
                }。
            }。
        }。
        return isEmpty(&s);
    }。
    int main() {。
        char exp[MAX_SIZE];
        printf("Enter an expression: ");
        scanf("%s", exp);
        if (isBalanced(exp)) {。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。