C语言实现括号匹配判断算法
///'#include <stdio.h>//n#include <stdbool.h>//n//n#define MAX_SIZE 100//n//n// 定义一个栈结构//ntypedef struct {//n int top;//n char items[MAX_SIZE];//n} Stack;//n//n// 初始化栈//nvoid init(Stack *s) {//n s->top = -1;//n}//n//n// 判断栈是否为空//nbool isEmpty(Stack *s) {//n return s->top == -1;//n}//n//n// 判断栈是否已满//nbool isFull(Stack *s) {//n return s->top == MAX_SIZE - 1;//n}//n//n// 入栈//nvoid push(Stack *s, char c) {//n if (isFull(s)) {//n printf(/'栈已满,无法入栈!//n/');//n return;//n }//n s->items[++(s->top)] = c;//n}//n//n// 出栈//nchar pop(Stack *s) {//n if (isEmpty(s)) {//n printf(/'栈为空,无法出栈!//n/');//n return '////0';//n }//n return s->items[(s->top)--];//n}//n//n// 判断括号是否匹配//nbool matchBrackets(char *expression) {//n Stack s;//n init(&s);//n int i = 0;//n while (expression[i] != '////0') {//n if (expression[i] == '(') {//n push(&s, '(');//n } else if (expression[i] == ')') {//n if (isEmpty(&s)) { // 栈为空,右括号多余//n return false;//n } else {//n pop(&s);//n }//n }//n i++;//n }//n return isEmpty(&s); // 如果栈为空,则括号匹配成功,否则左括号多余//n}//n//nint main() {//n char expression[MAX_SIZE];//n printf(/'请输入数学表达式:/');//n fgets(expression, MAX_SIZE, stdin);//n//n bool isMatched = matchBrackets(expression);//n//n if (isMatched) {//n printf(/'括号匹配成功!//n/');//n } else {//n printf(/'括号不匹配!//n/');//n }//n//n return 0;//n}//n/
原文地址: https://www.cveoy.top/t/topic/p5aw 著作权归作者所有。请勿转载和采集!