【发布时间】:2019-10-20 09:33:12
【问题描述】:
我正在尝试使用链表在堆上实现堆栈。 但是,为了使用“列表”功能,我需要创建链接列表的深层副本,我不完全确定它是如何完成的。
这是我的代码的一部分:
class Stack {
private:
struct Node {
int data;
Node *next;
};
Node *stackTop;
public:
Stack() {stackTop = nullptr;}
Stack(const Stack& original);
~Stack();
bool isEmpty() const;
int top() const;
int pop();
void push(int newItem);
};
Stack::~Stack() {
delete stackTop;
}
Stack :: Stack (const Stack& original) {
// DEEP COPY
}
void list (obj) {
cout << "[";
while(temp -> link != nullptr)
{
cout << temp -> data << ",";
temp = temp -> next;
}
cout<< temp -> data << "]" << endl;
}
【问题讨论】:
-
您可能需要在
Stack类中为stackTop使用公共getter 函数,因为stackTop是私有的。 -
使用
std::stack或std::vector。 -
请注意,实现的栈在堆上,列表函数应该在 Stack 类之外。如果可以在不使用复制构造函数的情况下显示内容,我很高兴知道如何。
标签: c++ linked-list stack implementation