C++:将节点附加到链表



这就是我需要做的:append_data将一个节点添加到顶部指向的列表末尾。生成的列表长一个元素,并且新添加的节点具有给定的数据值。考虑使用"append"函数来提供帮助。void AppendData(int数据(;

append与append_data相同,只是我们添加了一个节点,而不是一个值。void Append(shared_ptr new_node(;我可以使用这段代码AppendData,但在理想的情况下,我可以通过AppendData传递Append,并获得相同的结果。我现在正在为Append而挣扎,尽管答案在AppendData代码中

''

void LinkedList::AppendData(int data){
shared_ptr<node> temp(new node);
temp->data = data;
temp->next = shared_ptr<node>(NULL);

shared_ptr<node> end_node(top_ptr_);

if(end_node == NULL) {
end_node=temp;
} else {
while(end_node->next!=NULL) {
end_node=end_node->next;
}
end_node->next=temp;
}
}

void LinkedList::Append(shared_ptr<node> new_node){}

''

在理想的情况下,我可以通过AppendData传递Append并获得相同的结果。

实际上,Append的信息比AppendData少,尤其是数据本身。以AppendData创建一个节点,然后调用Append将该节点附加到列表中的方式重构它会更有意义:

void LinkedList::AppendData(int data){
// construct node
shared_ptr<node> temp(new node);
temp->data = data;
temp->next = shared_ptr<node>(NULL);
// append it
Append(temp);   
}

void LinkedList::Append(shared_ptr<node> new_node){
shared_ptr<node> end_node(top_ptr_);

if(end_node == NULL) {
end_node = new_node;  // new_node instead of temp
} else {
while(end_node->next!=NULL) {
end_node=end_node->next;
}
end_node->next = new_node;  // ditto
}
}

此外,此行end_node = new_node;不正确。如果列表为空,则需要更新top_ptr_,如下所示:

top_ptr_ = new_node;    

相关内容

  • 没有找到相关文章

最新更新