双链表后插
1. newNode 先指向原后继
在 prev 后插入。先保存原后继 nextNode,否则后面改 prev->next 时会丢失位置。
priorprevnext
priornextnext
priornewnext
newNode->next = prev->next;
2. 原后继的 prior 指回 newNode
若原后继存在,需要把它的前驱改成新结点。若 prev 是尾结点,这一步要跳过。
priorprevnext
priornextnext
priornewnext
if (prev->next != NULL) {
prev->next->prior = newNode;
}
3. newNode 的 prior 指向 prev
新结点的前驱必须接回 prev,否则只能从前向后走,不能从新结点向前走。
priorprevnext
priornewnext
newNode->prior = prev;
4. prev 的 next 指向 newNode
最后把 prev 的后继改为新结点。此时双向链路闭合为 prev <-> newNode <-> nextNode。
priorprevnext
priornewnext
priornextnext
prev->next = newNode;