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小时内删除。
发表评论