循环双链表
1. 空表:两个方向都回到头结点
带头结点循环双链表的空表满足 head->next == head 且 head->prior == head。
head->next = head;
head->prior = head;
2. 后插不用判断尾结点
普通双链表尾结点后继为 NULL;循环双链表尾结点后继为头结点,所以后继一定存在。
newNode->next = prev->next;
prev->next->prior = newNode;
newNode->prior = prev;
prev->next = newNode;
3. 删除后继不用判断空后继
target->next 至少能指向头结点。真正需要注意的是题目是否允许删除头结点。
DNode *target = prev->next;
prev->next = target->next;
target->next->prior = prev;
free(target);