LinkedList在C++中只添加两个元素
LinkedList only adds two elements in C++
我正在尝试学习 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 时才添加下一个节点。
有什么建议吗?
问题来自 insert
函数。它需要一个 Node* &
所以只要你这样做
node = node->next;
在循环中,它会修改调用者使用的变量作为节点参数列表。
删除 &
,您的问题就解决了:
void insert(Node* node, int data)
我正在尝试学习 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 时才添加下一个节点。
有什么建议吗?
问题来自 insert
函数。它需要一个 Node* &
所以只要你这样做
node = node->next;
在循环中,它会修改调用者使用的变量作为节点参数列表。
删除 &
,您的问题就解决了:
void insert(Node* node, int data)