我现在正在学习数据结构,并试图为我的链表类创建一些常用方法。由于与数组不同,链表没有明确的索引,我想知道在第n个节点之前或之后插入某个值还是某个值?
例如,如果链接列表具有以下节点{a,b,c,d,e}
。我可以在d
之后插入一个新项目,或者我可以在第三个节点之后插入一个新项目(假设第一个节点的索引为0)。
以下两种方式中哪种更常用?
// start from index 0
// insert a new node after nth node
void LinkedList::insert_after_nth_node(int nth, int data) {
if (nth < length) {
Node * pointer = head;
for (int i=0; i <= nth; i++) {
if(i == nth) {
Node * newNode = new Node();
newNode->data = data;
newNode->next = pointer->next;
pointer->next = newNode;
}
pointer = pointer->next;
}
}
else {
std::cout << "Out of boundary!" << std::endl;
}
}
void LinkedList::insert_after_by_value(int value, int data) {
Node * pointer = find(value); // find() will return the node that contains the value, or null if value doesn't exist
if (pointer) {
Node * newNode = new Node();
newNode->data = data;
newNode->next = pointer->next;
pointer->next = newNode;
}
else {
std::cout << "Value doesn't exist in list" << std::endl;
}
}