【发布时间】:2021-10-23 08:41:09
【问题描述】:
#include <iostream>
#include<stdlib.h>
#include <stack>
using namespace std;
const int MAX = 1000;
class Stack
{
int top=-1;
int arr[MAX];
public:
void push(int value)
{
if (top > MAX - 1)
cout << "Stack Overflow";
else
arr[top++] = value;
}
int pop()
{
if (top == -1)
cout << "Stack Underflow";
else
return arr[top--];
}
void StackTransfer(stack <int> &s1, stack <int> &s2)
{
int x;
if (s1.empty())
return;
x = s1.top();
s1.pop();
StackTransfer(s1, s2);
s2.push(x);
}
};
int main()
{
stack <int> st1, st2, st3;
st1.push(10);
st1.push(20);
st2.push(30);
st2.push(40);
cout<<st3.StackTransfer(&st1, &st2);
}
我想传递值,但是当我在 main() 中调用 StackTransfer() 函数时,我得到了这个错误
严重性代码描述项目文件行抑制状态
错误(活动)E0135 类“std::stack
StackTransfer() 的逻辑对于传输值和保持顺序是否正确?
【问题讨论】:
-
使用第三个堆栈?
-
投票重新开放,因为该帖子已在第四版 (stackoverflow.com/revisions/68885110/4) 中大幅扩展,并添加了重要的上下文。
标签: c++ arrays data-structures stack