Tag: 后缀表示法

在C中评估后缀表达式

我正在尝试编写一个评估后缀算术表达式的程序。 程序将一个字符串发送到我的函数evaluatePostfix ,后者继续识别操作数和运算符并提出整数解。 我通过在识别时按下扫描的字符来操作此程序中的堆栈,当然在需要评估时执行适当的pop函数。 但是现在,我遇到的问题是程序挂起似乎是一个无限循环。 我想我不确定如何告诉函数在评估第一个字符后继续执行字符串中的下一个字符。 另一点需要注意的是,用户在每个操作数和操作符之间放置一个空格。 这是我的function: int evaluatePostfix(char *postfixStr) { stack * s; int x, y; stackInit(&s); do { if(isOperand(postfixStr) == 1) { stackPush(&s, postfixStr); } if(isOperator(postfixStr) == 1) { y = atoi(stackPop(s)); x = atoi(stackPop(s)); char *str = malloc(10 * sizeof(char)); sprintf(str, “%d”, applyOperator(x, y, postfixStr)); stackPush(&s, str); } } while (postfixStr […]

使用堆栈和C的Postfix评估

我在这里有一段时间与类似的问题,但我认为错误的问题。 为了给出一些背景知识,我的任务是创建一个C程序来解决表单中的后缀表达式 8 7 – 9 * = 我认为我的问题是,我的教授给出了一些不正确的堆栈代码。 我说这是因为我不断得到堆栈溢出(lol)错误,我的堆栈远远没有达到。 如果它有助于我使用visual studio 2005.这是我的代码: #include ` #include #define STACK_SIZE 20 typedef int Bit; Bit contents[STACK_SIZE]; int top = 0; void make_empty(void); int is_empty(void); int is_full(void); void push(Bit i); int pop(void); void stack_overflow(void); void stack_underflow(void); int main(void) { Bit bit; char operation; int operand; Bit current; int […]