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

时间:2016-08-10 10:04:19

标签: 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 and 10,即只给出最后2个元素。看起来它只是取代了价值观。但是,我没有得到它。对于我的temp节点,我已将其初始化为下一个节点temp->next = NULL。 在insert()函数中,我使用if condition仅添加下一个节点(如果为NULL)。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

问题来自insert功能。只要你这样做就需要Node* &

node = node->next;

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

void insert(Node* node, int data)