我已经在为链接列表做push_back方法了,
#include <iostream>
using namespace std;
class Node{
public:
int data;
Node* next;
Node(int data,
Node* next = nullptr){
this->data = data;
this->next = next;
}
};
Node* head = nullptr;
void push_back(int data){
if(head == nullptr){
head = new Node(data);
}
else{
Node *current = head;
while(current->next != nullptr){
current = current->next;
}
current->next = new Node(data);
}
}
但是我想知道是否可以在另一个节点之后添加一个节点(我正在谈论下面的这段代码):
else{
Node *current = head;
while(current->next != nullptr){
current = current->next;
}
current->next = new Node(data);
}
不使用条件:
while(current->next != nullptr)
{current = current->next;}
,而是这样做:
while(current != nullptr){current = current->next;}
这样做时,我们将当前指针均衡为nullptr。从那时开始是否可以在末尾添加一个新的Node并将该Node链接到整个列表?
或者while(current != nullptr)
的概念
不利于push_back()?
答案 0 :(得分:2)
通过将指针指向要更改的指针,您可以执行类似的操作。
void push_back(int data){
Node** current = &head;
while(*current != nullptr) { current = &(*current)->next; }
*current = new Node(data);
}
作为奖励,您再也没有空列表的特殊情况了。