双链表后插

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;