C++ 在链表末尾插入节点
下面的片段对于在链表末尾插入节点无效C++ 在链表末尾插入节点,c++,data-structures,linked-list,C++,Data Structures,Linked List,下面的片段对于在链表末尾插入节点无效 void insert_end(int item){ nodeptr newNode = new ListNode; newNode->data = item; newNode->next = NULL; if(head == NULL){ head = newNode; curr = head; }else{ curr = head;
void insert_end(int item){
nodeptr newNode = new ListNode;
newNode->data = item;
newNode->next = NULL;
if(head == NULL){
head = newNode;
curr = head;
}else{
curr = head;
while(curr != NULL) curr = curr->next;
curr = newNode;
}
}
void insert_end(int item){
nodeptr newNode = new ListNode;
newNode->data = item;
newNode->next = NULL;
if(head == NULL){
head = newNode;
curr = head;
}else{
curr = head;
while(curr->next != NULL) curr = curr->next;
curr->next = newNode;
}
}
另一个可用于在链表末尾插入节点的片段
void insert_end(int item){
nodeptr newNode = new ListNode;
newNode->data = item;
newNode->next = NULL;
if(head == NULL){
head = newNode;
curr = head;
}else{
curr = head;
while(curr != NULL) curr = curr->next;
curr = newNode;
}
}
void insert_end(int item){
nodeptr newNode = new ListNode;
newNode->data = item;
newNode->next = NULL;
if(head == NULL){
head = newNode;
curr = head;
}else{
curr = head;
while(curr->next != NULL) curr = curr->next;
curr->next = newNode;
}
}
我的问题是为什么第一个无效?实际上,两个片段应该是相似的。
假设我已经有三个节点了。现在我想插入另一个节点
如果不相似,为什么 您必须理解指针是一个变量,其值是一个地址 第一个算法是错误的,因为当您完成while循环的迭代时,curr指向NULL(地址0x0),NULL不是列表中的有效节点 第二种算法有效,因为当您完成while循环的迭代时,curr指向列表的最后一个节点,然后将newNode添加到curr->next,并用newNode的地址替换NULL
希望这有帮助!:)你能为你使用的语言添加标签吗?添加C++。谢谢你通知我。