1 循环链表的定义
将单链表中最后一个数据元素的next指针指向第一个元素,如下图所示:
2 循环链表的游标定义:
在循环链表中可以定义一个“当前指针”,这个指针通常称为游标,可以通过游标来遍历链表中所有元素。如下图所示:
3 循环链表的具体实现分析
(1)循环链表节点指针域定义
typedef struct _tag_CircleListNode
{
struct _tag_CircleListNode *next;
} CircleListNode;
(2)循环链表头结点定义
typedef struct _tag_CircleList
{
CircleListNode header;//包含指针域节点
CircleListNode *slider;//游标
int length;//链表长度
}TCircleList;
(3)业务节点示例
struct Value
{
CircleListNode circlenode;//包含指针域节点
int v;
};
(4)创建循环链表
//创建循环链表
CircleList* CircleList_Create()
{
TCircleList * ret = (TCircleList *)malloc(sizeof(TCircleList));
if (ret == NULL)
{
return NULL;
}
ret->header.next = NULL;
ret->length = 0;
ret->slider = NULL;
return ret;
}
(5)销毁循环链表
void CircleList_Destory(CircleList *list)
{
if (list == NULL)
{
return;
}
free(list);
}
<