【发布时间】:2016-07-14 04:16:58
【问题描述】:
我正在尝试使用 C++ 中的构造函数来实现堆栈。我需要使用外部函数将元素推送到堆栈上,但是,它似乎无法正常工作。 pushexternal 函数似乎“进入”了 push 函数,但它不会增加 ind 值,因此它不会将新元素添加到堆栈中(例如在我的代码中,所有 pushxternals 都会尝试将值推送到相同的索引,s.push 使用的最后一个索引 - ind==2)。我不确定我做错了什么。
哦,我只是应该修改类代码 - pushexternal 和 main 必须保持不变。
#include <iostream>
using namespace std;
class Stack {
public:
int ind;
int * arr;
Stack()
{
arr = new int[25];
ind = -1;
}
~Stack()
{
delete [] arr;
}
void push(int val)
{
arr[++ind] = val;
cout << "Added " << arr[ind] << " to " << ind << endl;
}
void top()
{
cout << "Last: " << arr[ind];
}
};
void pushexternal(Stack s, int a) {
s.push(a);
}
int main() {
Stack s;
s.push(0);
s.push(1);
s.push(2);
pushexternal(s, 3);
pushexternal(s, 4);
pushexternal(s, 5);
return 0;
}
结果:
Added 0 to 0
Added 1 to 1
Added 2 to 2
Added 3 to 3
Added 4 to 3
Added 5 to 3
Top: 2
【问题讨论】: