我可以用这种方式为链表实现一个 push_back 方法吗?
Can I implement a push_back method for linked list in that way?
我已经为 link 列表使用了 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。从那时起是否可以在末尾添加一个新节点并将该节点link添加到整个列表?
或者while(current != nullptr)
的概念
不利于 push_back()?
您可以做类似的事情,方法是将指针指向您希望更改的指针。
void push_back(int data){
Node** current = &head;
while(*current != nullptr) { current = &(*current)->next; }
*current = new Node(data);
}
作为奖励,您不再有空列表的特殊情况。
我已经为 link 列表使用了 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。从那时起是否可以在末尾添加一个新节点并将该节点link添加到整个列表?
或者while(current != nullptr)
的概念
不利于 push_back()?
您可以做类似的事情,方法是将指针指向您希望更改的指针。
void push_back(int data){
Node** current = &head;
while(*current != nullptr) { current = &(*current)->next; }
*current = new Node(data);
}
作为奖励,您不再有空列表的特殊情况。