单链表按位插入
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;