更新时间:2022-06-16 02:13:43
您写的是:
如果 firstNode
为null,则将其替换为单个节点 temp
没有下一个节点(没有人的 next
是 temp
)
if firstNode
is null, it's replaced with the single node temp
which
has no next node (and nobody's next
is temp
)
否则,如果 firstNode
不为null,则除了 temp
节点已分配并泄漏.
Else, if firstNode
is not null, nothing happens, except that the temp
node is allocated and leaked.
以下是更正确的代码:
void insertAtEnd(node* &first, string name) {
// create node
node* temp = new node;
temp->data = name;
temp->next = NULL;
if(!first) { // empty list becomes the new node
first = temp;
return;
} else { // find last and link the new node
node* last = first;
while(last->next) last=last->next;
last->next = temp;
}
}
此外,我建议将构造函数添加到 node
:
Also, I would suggest adding a constructor to node
:
struct node {
std::string data;
node* next;
node(const std::string & val, node* n = 0) : data(val), next(n) {}
node(node* n = 0) : next(n) {}
};
您可以通过以下方式创建 temp
节点:
Which enables you to create the temp
node like this:
node* temp = new node(name);