gpt4 book ai didi

c++ - 使用 C++ 的堆栈和 char 数组评估后缀表达式

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:30 25 4
gpt4 key购买 nike

我不知道我哪里做错了。每次我在主要功能的末尾“弹出”时,它总是什么也没给我。我每次在操作后推之前和之后都通过弹出来检查,结果就在那里。但每次我跳出 for 循环时,堆栈都没有给我任何信息。谢谢之前,我非常感谢你的回答。P.S = 我不允许使用类或 OOP。所以请不要用那些方法给我答案。

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<cstdlib>
#include<cstring>

using namespace std;

typedef struct
{
int top;
int data[20];
}stack;

void initStack(stack &S)
{
int i;
S.top=-1;
}

int pop (stack &S)
{
int number;
number = S.data[S.top];
S.top = S.top - 1;
return number;
}

void push(stack &S, int number)
{
S.top = S.top + 1;
S.data[S.top] = number;
}

void compute(stack &S, char *ch, int n)
{
int result;
for (int i = 0 ; i <= n-1; i++)
{
if (ch[i] == '*')
{
int operand1 = pop (S);
int operand2 = pop (S);
result = operand1 * operand2;
push(S, result);
}

else if (ch[i] == '/')
{
int operand1 = pop (S);
int operand2 = pop (S);
result = operand1 / operand2;
push(S, result);
}

else if (ch[i] == '+')
{
int operand1 = pop (S);
int operand2 = pop (S);
result = operand1 + operand2;
push(S, result);
}

else if (ch[i] == '-')
{
int operand1 = pop (S);
int operand2 = pop (S);
result = operand1 - operand2;
push(S, result);
}

else
{
result = ch[i] - '0';
push(S, result);
}
}
}

main()
{
stack ST;
char ch[20];
initStack(ST);
cout<<"Please enter the operation: ";
gets(ch);
int n = strlen(ch);
compute(ST, ch, n);
pop(ST);
}

最佳答案

好吧,如果我理解正确的话,这个问题就很简单了。您需要打印您弹出的值

替换

pop(ST);

cout << pop(ST) << '\n';

很明显,除非你记得打印你想看的东西,否则你不会看到任何东西。

关于c++ - 使用 C++ 的堆栈和 char 数组评估后缀表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com