使用逆波兰算法计算公式5+10+-20-10+-1010的值使用c代码编写
以下是使用C代码编写逆波兰算法计算公式的示例:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#define STACK_SIZE 100
int stack[STACK_SIZE];
int top = -1;
void push(int value) {
if (top >= STACK_SIZE - 1) {
printf("Stack overflow\n");
exit(1);
}
stack[++top] = value;
}
int pop() {
if (top < 0) {
printf("Stack underflow\n");
exit(1);
}
return stack[top--];
}
int calculate(int operand1, int operand2, char operator) {
switch (operator) {
case '+':
return operand1 + operand2;
case '-':
return operand1 - operand2;
case '*':
return operand1 * operand2;
case '/':
return operand1 / operand2;
default:
printf("Invalid operator\n");
exit(1);
}
}
int evaluateReversePolishNotation(char *expression) {
int i = 0;
while (expression[i] != '\0') {
if (isdigit(expression[i])) {
push(expression[i] - '0');
} else {
int operand2 = pop();
int operand1 = pop();
int result = calculate(operand1, operand2, expression[i]);
push(result);
}
i++;
}
return pop();
}
int main() {
char expression[] = "5 10 + -20 + 10 - 10 10 * +";
int result = evaluateReversePolishNotation(expression);
printf("Result: %d\n", result);
return 0;
}
这段代码首先定义了一个栈和栈相关的操作函数。然后,evaluateReversePolishNotation函数根据逆波兰表达式进行计算,用到了栈来保存操作数和中间结果。最后,在main函数中调用evaluateReversePolishNotation函数,并打印结果
原文地址: https://www.cveoy.top/t/topic/iqoU 著作权归作者所有。请勿转载和采集!