1,循环单链表和单链表的区别:表中最后一个结点的指针不是NULL而是改为指向头结点,从而整个链表形成一个环
我们知道在循环单链表中,表尾结点的next指针指向l头结点,那么判断循环单链表为空的条件就是表尾指针是否指向头结点
命题:循环单链表中删除首元素的操作
循环单链表的插入,删除算法与单链表几乎一样所不同的是若操作在表尾进行则执行的操作不同
在单链表中只能从头结点往后顺序遍历整个链表,但循环链表可以从表中任意一个结点开始遍历整个链表
有的时候对单链表不设置头指针而仅仅设置尾指针,使得操作效率更高,其原因是,若设置的是头指针,对在表尾插入元素需要O(n)的时间复杂度,若设置的是尾指针,r->next即为头指针,对在表头或表尾插入元素都只需要O(1)的时间复杂度
2,循环双链表
循环双链表与循环单链表不同的是,头结点的piror还要指向表尾,当循环双链表为空表时,头结点l的piror和next都指向l