用C语言写后缀表达式求值代码
时间: 2024-01-29 21:03:28 浏览: 79
后缀表达式求值(c语言版)
好的,我可以回答这个问题。以下是用C语言写后缀表达式求值代码的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define STACK_SIZE 50
typedef struct {
int top;
int items[STACK_SIZE];
} Stack;
void push(Stack *s, int item) {
if (s->top == STACK_SIZE - 1) {
printf("Stack Overflow!\n");
exit(1);
}
s->items[++(s->top)] = item;
}
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack Underflow!\n");
exit(1);
}
return s->items[(s->top)--];
}
int evaluate(char *expr) {
Stack s;
s.top = -1;
int i, num1, num2, result;
for (i = 0; expr[i] != '\0'; i++) {
if (isdigit(expr[i])) {
push(&s, expr[i] - '0');
} else {
num2 = pop(&s);
num1 = pop(&s);
switch (expr[i]) {
case '+': push(&s, num1 + num2); break;
case '-': push(&s, num1 - num2); break;
case '*': push(&s, num1 * num2); break;
case '/': push(&s, num1 / num2); break;
}
}
}
result = pop(&s);
if (s.top != -1) {
printf("Invalid Expression!\n");
exit(1);
}
return result;
}
int main() {
char expr[] = "23+45-6*";
int result = evaluate(expr);
printf("Result: %d\n", result);
return 0;
}
```
请注意,此代码是一个简单的示例,可能需要根据具体需求进行修改和优化。另外,请确保输入的后缀表达式格式正确,否则可能会导致不可预知的结果。
阅读全文