目录
一、循环链表
1、定义和特点
注:以下算法中循环链表的节点声明同单链表
2、初始化循环链表
创建一个空的循环单链表,它只有头结点,由L指向它。该结点的next域指向该头结点
Status InitList(LinkList &L)
{
L = (LinkList)malloc(sizeof(LNode));
if(!L)
exit(OVERFLOW);
L->next = L;
return Ok;
}
3、求循环链表的长度
p初始指向头结点,当p再次指向头结点时,对循环链表的一轮遍历结束
int ListLength(LinkList L)
{
int i = 0;
LinkList p = L->next; //p指向第一个结点
while(p != L){ //如果没有到表尾
i++;
p = p->next;
}
return i;
}
4、遍历循环链表找到值为x的结点个数(重点在于遍历操作)
int CountNode(LNode *L, int x)
{
int i = 0;
LNode *p = L->next;
while(p != L){
if(p->data == x) i++;
p = p->next;
}
return i;
}