栈在括号匹配中的应用—算法思想和代码(C语言) 以下是一个使用 C 语言实现栈的括号匹配的示例代码: “`c #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 // 栈结构 typedef struct { char data[MAX_SIZE]; int top; } Stack; // 初始化栈 void initStack(Stack *stack) { stack->top = -1; } // 判断栈是否为空 int isEmpty(Stack *stack) { return stack->top == -1; } // 判断栈是否已满 int isFull(Stack *stack) { return stack->top == MAX_SIZE – 1; } // 入栈 void push(Stack *stack, char item) { if (isFull(stack)) { printf(“栈已满,无法入栈。 ”); return; } stack->data[++stack->top] = item; } // 出栈 char pop(Stack *stack) { if (isEmpty(stack)) { printf(“栈为空,无法出栈。 ”); return ‘0’; } return stack->data[stack->top–]; } // 括号匹配函数 int bracketMatch(char *expression) { Stack stack; initStack(&stack); int i = 0; while (expression[i] != ‘0’) { if (expression[i] == ‘(‘ || expression[i] == ‘[‘ || expression[i] == ‘{‘) { push(&stack, expression[i]); } else if (expression[i] == ‘)’ || expression[i] == ‘]’ || expression[i] == ‘}’) { if (isEmpty(&stack)) { return 0; } char top = pop(&stack); if ((expression[i] == ‘)’ && top != ‘(‘) || (expression[i] == ‘]’ && top != ‘[‘) || (expression[i] == ‘}’ && top != ‘{‘)) { return 0; } } i++; } return isEmpty(&stack); } int main() { char expression[MAX_SIZE]; printf(“请输入一个表达式:”); fgets(expression, MAX_SIZE, stdin); int result = bracketMatch(expression); if (result) { printf(“括号匹配成功! ”); } else { printf(“括号匹配失败! ”); } return 0; } “` 这段代码实现了一个简单的栈结构,并使用栈来进行括号匹配。通过输入一个表达式,代码会判断表达式中的括号是否匹配。如果匹配成功,则输出”括号匹配成功!”,否则输出”括号匹配失败!”。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/71012.html