一,定义
将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。
循环链表可以从任意一个结点出发,访问到链表的全部结点。
图解(第一张为空表):
二,指向终端结点的尾指针
用指向终端结点的尾指针来表示循环列表,查找开始结点和终端结点都很方便。
若终端结点用尾指针rear指示,则查找终端结点是O(1),而开始结点,其实就是rear->next->next,其时间复杂度也是O(1)。
三,合并两个循环列表
p = rearA->next; //①
rearA->next = rearB->next->next;//②
rearB->next = p;
free(p);