循环列表基本方法的实现与单链表类似,但是在遍历判别的时候有所区别,不再是指向NULL结束,而是指向头指针时结束
1、创建空的循环链表
if(head->next == head)
return head;
2、将循环链表置空
CriList p = NULL;
while(head->next != head)
{
p = head->next;
head->next = p->next;
free(p);
}
p = NULL;
3、判断循环链表是否为空
1.if(head->next == head);//return TRUE;
2.if(0 == length(head));//return TRUE;
4、计算循环链表的长度
CriList p = head->next;
while(p)
{
count ++;
p = p->next;
}
return count;
5、查询循环链表中某一内容的位置
CriList p = head = head->next;
while(p)
{
if(x == p->data)
{}
p = p->next;
}
6、查询循环链表第 i 个结点的位置
判断 i 是否符合要求
同单链表的Locate
7、将某一内容插入到循环链表的 i 结点上
当插入到
第一个结点时比较特殊,将新的内容放入新链表,将该链表插入,定义q指向该链表
CriList p = head;
if(1 == i)
{
q->next = head->next;
head->next = q;//将q置为第一个结点,使head能找到第一个结点
}
8、删除循环链表中的第 i 个结点
9、打印循环链表