gpt4 book ai didi

c++ - 链表,在最后插入 C++

转载 作者:太空狗 更新时间:2023-10-29 23:30:26 25 4
gpt4 key购买 nike

我在 C++ 上写了一个简单的函数来插入链表的末尾,但最后它只显示了第一个数据。我不知道出了什么问题。这是函数:

void InsertAtEnd (node* &firstNode, string name){

node* temp=firstNode;

while(temp!=NULL) temp=temp->next;

temp = new node;
temp->data=name;
temp->next=NULL;

if(firstNode==NULL) firstNode=temp;

}

最佳答案

你写的是:

  • 如果 firstNode 为 null,则用单个节点 temp 替换它没有下一个节点(没有人的nexttemp)

  • 否则,如果 firstNode 不为 null,除了 temp节点被分配和泄漏。

下面是一个更正确的代码:

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 添加一个构造函数:

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 节点:

node* temp = new node(name);

关于c++ - 链表,在最后插入 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20125477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com