这是我想出的,我只是希望程序弹出堆栈中的前2个值,计算它们并将其推回到堆栈中...我已经创建了所需的函数但似乎有添加两个数字的函数存在问题。
#include <iostream>
using namespace std;
int Maxlenght=5;
class stackhouse{
private:
int *CreateArray;
int top;
public:
stackhouse();
bool IsEmpty();
bool IsFull();
void constructor();
void Push(int);
void Pop(int);
void Sum();
void Sub();
};
stackhouse::stackhouse(){
CreateArray= new int[Maxlenght];
top=-1;
}
bool stackhouse::IsEmpty()
{
if (top==-1) return 1;
else return 0;
}
bool stackhouse::IsFull(){
if (top==Maxlenght-1) return 1;
else return 0;
}
void stackhouse::Push(int number){
top++;
CreateArray[top]=number;
}
void stackhouse::Pop (int number){
number=CreateArray[top];
top--;
}
void stackhouse::Sum(){
int number=7,sum=5;
Pop(sum);
Pop(number);
sum+=number;
Push(sum);
cout<<sum;
}
void main(){
int number;
stackhouse stack1;
stackhouse();
cout<<"Please fill the stack...";
stack1.Push(5);
stack1.Push(2);
cout<<"The sum is...";
stack1.Sum();
}
答案 0 :(得分:3)
Pop
函数需要返回number
或通过引用传递number
;否则,number
的分配无效。
void stackhouse::Pop(int& number) { // <-- add the &
number = CreateArray[top];
top--;
}
或者
int stackhouse::Pop() {
int number = CreateArray[top];
top--;
return number;
}
(请注意,第二种方式要求您编写sum = Pop()
而不是Pop(sum)
。)
答案 1 :(得分:1)
按值传递参数到pop()方法是没有意义的。它需要返回一个值。