单链表按位插入

1. 定位第 i - 1 个结点

带头结点时,插入第 1 位也可以统一看成在第 0 个结点后插入;第 0 个结点就是头结点。

next
a1next
a2next
a3NULL
prev
LNode *prev = head;
int position = 0;
while (prev != NULL && position < index - 1) {
    prev = prev->next;
    position++;
}

2. 新结点先接住原后继

prev->next 原本指向后半段链表。先让 newNode->next 记录它,后半段才不会丢。

prevnext
next...
newnext
newNode->data = value;
newNode->next = prev->next;

3. 前驱再指向新结点

第二条指针改完后,新结点正式进入链表。两句顺序反过来会丢失原后继地址。

prevnext
newnext
next...
prev->next = newNode;
return true;