首先,题目中说是一个带头结点的循环链表。那啥是带头结点的循环链表,如图
在单链表的第一个结点之前附设一个结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。
那么,怎么判断链表循环完了?那就是当遍历链表的节点指向头结点的时候。
程序中
LinkList *p = L->next;
表明我们从头结点的下一个节点开始,就是链表的第一个节点开始扫描。
而
while(p!=L)
就表示扫描的节点不到头结点,如果到头结点,表示扫描完毕,退出循环。