我正在尝试创建一个将节点添加到 LinkedList 末尾的函数。我知道如何使用循环来做到这一点,但我的教授希望它以某种方式完成,我不明白为什么它不起作用。他几乎给了我们所有的代码..
这是他给我们的伪代码:
process append(data)
if (not the end)
next->append(data);
else
next=new Node();
next->data=data;
next->data = nullptr;
这就是我想出的:
struct Node {
int data;
Node* next;
};
struct LinkedList {
Node* head;
LinkedList() {head = nullptr;}
void prepend(int data) {
if (head == nullptr) {
Node* tmp = new Node();
tmp->data=data;
tmp->next=nullptr;
}
else {
Node* tmp = new Node();
tmp->data=data;
tmp->next=head;
head=tmp;
}
}
void append(int data) {
Node* tmp = head;
if (tmp->next != nullptr) {
tmp=tmp->next->append(data);
}
else {
tmp->next = new Node();
tmp->next->data = data;
tmp->next->next = nullptr;
}
}
};
int main()
{
LinkedList LL = LinkedList();
LL.prepend(7);
LL.append(6);
std::cout << LL.head->data << std::endl;
}
我的前置(添加到 LinkedList 的开头)工作正常,但是当我尝试这段代码时,我得到了
main.cpp:48:20:错误:“结构节点”没有名为“附加”的成员 tmp->next->append(data);
所以我很确定说 next->append(data) 有问题,据我了解,它应该递归地回调 append 函数,直到它到达一个空指针。我在想也许有某种方法可以编写它,但是我班上的人告诉我 next->append(data) 应该起作用,所以我想我不确定为什么这不起作用任何事物。我尝试在 Node 结构中编写 append 函数,但是它说 head 没有在作用域中声明,我真的不知道如何使用它。我对 C++ 中的类/结构也有点陌生,所以我假设这是我不理解的东西。