c++写一个逆波兰表达式
时间: 2024-05-01 13:20:58 浏览: 83
逆波兰表达式是一种将运算符放在操作数后面的表达式,因此可以使用栈来计算。
以下是一个简单的 C 代码示例,用于读取逆波兰表达式并计算其结果:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_STACK_SIZE 100
int stack[MAX_STACK_SIZE];
int top = -1;
void push(int value) {
if (top >= MAX_STACK_SIZE - 1) {
fprintf(stderr, "Stack overflow\n");
exit(EXIT_FAILURE);
}
stack[++top] = value;
}
int pop() {
if (top < 0) {
fprintf(stderr, "Stack underflow\n");
exit(EXIT_FAILURE);
}
return stack[top--];
}
int main() {
char c;
int a, b;
while ((c = getchar()) != EOF && c != '\n') {
if (isdigit(c)) {
ungetc(c, stdin);
scanf("%d", &a);
push(a);
} else if (c == '+' || c == '-' || c == '*' || c == '/') {
b = pop();
a = pop();
switch (c) {
case '+': push(a + b); break;
case '-': push(a - b); break;
case '*': push(a * b); break;
case '/': push(a / b); break;
}
}
}
printf("Result: %d\n", pop());
return 0;
}
```
该程序首先定义了一个栈和一些基本操作函数(`push` 和 `pop`)。然后,它从标准输入中读取逆波兰表达式,并使用栈来计算其结果。在计算过程中,它将数字推入栈中,并在遇到运算符时从栈中弹出两个数字并执行相应的操作,然后将结果推回栈中。最终,栈中仅剩一个元素,即计算结果。
阅读全文