循环链表的定义和结构
在单链表中,使其最后一个结点的指针又指回到第一个结点,这样的线性链表叫做循环链表。
判断表尾的条件:p→next==L
判断空表的条件:L→next==L
删除当前结点的后继结点
if(next==this) return NULL;
cNode*a=next;
next= a→next;
return a;
例:两个循环链表合并成一个循环链表
//假设A、B为非空循环链表的尾指针
*p = A->next;
A->next = B ->next;
delete b->next;
B->next=p;
双向循环链表
结点结构
链表的结构
循环双链表判断为空的条件
L→left==L→right==L
双链表的对称性
p→right→left=p→left→right = p
//在当前节点this之后插入结点p
right→left=p;
p→right=right;
p→left=this;
right=p;
//删除this结点
left→right=right;
right→left=left;