编写一段c语言后缀表达式代码
时间: 2023-10-24 11:07:31 浏览: 90
C语言后缀表达式计算.doc
当然,我很乐意为您提供后缀表达式的c语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 定义栈结构体
typedef struct {
int top;
int data[MAX_SIZE];
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈
void push(Stack *s, int value) {
if (is_full(s)) {
printf("Stack Overflow!\n");
exit(1);
}
s->data[++s->top] = value;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack Underflow!\n");
exit(1);
}
return s->data[s->top--];
}
// 计算后缀表达式
int evaluate_postfix(char *exp) {
Stack s;
init(&s);
int i, op1, op2, result;
for (i = 0; exp[i] != '\0'; i++) {
switch (exp[i]) {
case '+':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 + op2);
break;
case '-':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 - op2);
break;
case '*':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 * op2);
break;
case '/':
op2 = pop(&s);
op1 = pop(&s);
push(&s, op1 / op2);
break;
default:
push(&s, exp[i] - '0');
break;
}
}
result = pop(&s);
return result;
}
int main() {
char exp[MAX_SIZE];
printf("请输入后缀表达式:");
scanf("%s", exp);
printf("计算结果为:%d\n", evaluate_postfix(exp));
return 0;
}
```
希望这段代码对您有所帮助!
阅读全文