循环链表包括循环单链表和循环双链表
循环单链表的结点类型与非循环单链表相同,把非循环单链表改成循环单链表只需要将非循环单链表的尾结点next指针由原来的NULL改为指向头节点,自此就将非循环单链表形成看一个环,从表中的任一结点出发均可找到链表中其他的结点,这就是带头节点的循环单链表。
循环单链表的操作与单链表基本一致,差别在于遍历链表时,判别当前指针p是否指向表尾结点的终止条件不同:
单链表:p->next != NULL
循环单链表:p->next != h
如下是循环单链表:
循环单链表即将普通的单链表结成一个环,与单链表相比,循环单链表主要有以下两点差异:
1、链表初始化时需要将头指针指向自己,形成一个环。
2、遍历时不再判断下一节点不为空,而是判断下一节点不是头结点。
节点类的实现与单链表相同
//节点类
public class Node<T> {
//数据域
public T dat