设字符数组b中存放着后缀表达式“ABCD/-E*+#”,编写利用堆栈完成后缀表达式计算的算法。#为结束符

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:25:37
希望能有详解的代码 这是c编译环境下。

#include <stdio.h>
#include <string.h>

int main()
{
int stack[100], stackN = 0, i, j = 0;
const char *exp = "ABCD/-E*+#";

for (i = 0; i < strlen(exp); i++)
{
if (exp[i] >= 'A' && exp[i] <= 'Z') {
stack[stackN++] = exp[i]; // 操作数压栈
}
else if (exp[i] == '+') {
printf("calculate %c + %c = %c\n", stack[stackN - 2], stack[stackN - 1], 'L' + j);
stackN -= 2; // 操作数弹栈
stack[stackN++] = 'L' + j++; // 结果压栈
}
else if (exp[i] == '-') {
printf("calculate %c - %c = %c\n", stack[stackN - 2], stack[stackN - 1], 'L' + j);
stackN -= 2;
stack[stackN++] = 'L' + j++;
}
else if (exp[i] == '*') {
printf("calculate %c * %c = %c\n", stack[stackN - 2], stack[stackN - 1], 'L' + j);
stackN