我正在为学校解决一个问题,我在那里总结存储在线性链表中的值。
我有一个定义节点的结构。它有一个数据部分和下一个指针。
我有一个类,它具有在公共部分列表中工作的函数,以及私有部分中名为head
的指针。
我在我的实现文件中实现了一个递归函数来求和值。
它需要node*
作为参数。
我的问题是,如果它是私有数据成员,如何将head
指针传递给main()
中的函数?
我已经成功地迭代实现了这个,所以请假设列表在main()
中成功实例化。我只是无法弄清楚如何从那里将指针传递给我的函数。
答案 0 :(得分:1)
你没有把它传入。该类已经拥有它。如果我的课你应该看起来像这样:
class Foo {
node* _head;
node* _tail;
public:
Foo() : _head(nullptr), _tail(nullptr) {}
~Foo() {
while(_head != nullptr) {
node* temp = _head;
_head = _head->next;
delete temp;
}
}
void insert(const int arg) {
if(_head = _nullptr) {
_head = new node(arg);
_tail = _head;
} else {
_tail->next = new node(arg);
_tail = _tail->next;
}
}
int sum() const {
int total = 0;
for(auto i = _head; i != nullptr; i = i->next) {
total += i->val;
}
return total;
}
};
请注意,sum
无需将_head
传递给它,因为_head
实际上已经是sum
方法的对象的成员。