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

标签 c++ xcode linked-list singly-linked-list

我正在尝试学习 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/

相关文章:

java - 我想找到链表之间的数字

algorithm - 将节点移动到单链表的开头

c - 函数不能始终打印正确的输出

c++ - 无序集的编译问题

c++ - Bresenham 的线算法所有情况

xcode - 在 Storyboard OSX 应用程序中设置 initialFirstResponder

iphone - 程序在 dequeueReusableCellWithIdentifier : 处崩溃

c++ - 如何水平打印二叉树?

C++ 输入流

objective-c - 声音在共鸣板(Xcode)中停止工作