gpt4 book ai didi

c++ - LinkedList在C++中只添加两个元素

转载 作者:行者123 更新时间:2023-11-28 00:01:07 25 4
gpt4 key购买 nike

我正在尝试学习 C++ 中的链表,但我遇到了一个问题,因为链表只添加了 2 个元素。

代码:

struct Node {
int data1;
Node* next;
};

void firstElement(Node *&head, int d)
{
Node* temp = new Node;
temp->data1 = d;
temp->next = NULL;
head = temp;
}

void insert(Node *&node, int data)
{
Node* temp = new Node;
temp->data1 = data;
temp->next = NULL;


while(node)
{
if(node->next == NULL)
{
node->next = temp;
return;
}
node = node->next;
}

}

void display(Node *&node)
{
while(node != NULL)
{
cout << node->data1 << endl;
node = node->next;
}
}

int main()
{
Node* head;

firstElement(head, 1);
insert(head, 2);
insert(head, 3);
insert(head, 4);
insert(head, 5);
insert(head, 6);
insert(head, 7);
insert(head, 8);
insert(head, 9);
insert(head, 10);

display(head);

}

在输出中,它只给我值 9 和 10,即只有最后 2 个元素。看起来它只是在替换值。但是,我不明白。对于我的 temp 节点,我已经将其初始化为下一个,即 temp->next = NULL。在 insert() 函数中,我使用 if condition 仅在其为 NULL 时才添加下一个节点。

有什么建议吗?

最佳答案

问题来自insert 函数。它需要一个 Node* & 所以只要你这样做

node = node->next;

在循环中,它会修改调用者使用的变量作为节点参数列表。删除 & ,你的问题就解决了:

void insert(Node* node, int data)

关于c++ - LinkedList在C++中只添加两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38870229/

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