循环单链表是单链表的另一种形式,其结构特点链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环。和单链表相同,循环链表也有带头结点结构和不带头结点结构两种,带头结点的循环单链表实现插入和删除操作较为方便。
循环单链表只是将单链表的尾结点的指针指向头结点,就直接书写代码,有一点需要主要的是在循环单链表中只有头结点时,将头结点的指针域不指向空,而是执行自己。
1、循环单链表的存储结构
typedef int ElemType;
typedef struct CycNode
{
ElemType data;
struct CycNode *next;
}CycNode;
typedef struct CycLinkList
{
CycNode *head;
int count;
}CycLinkList, *pCycLinkList;
2、循环单链表的初始化
void InitCycList(pCycLinkList list)
{
assert(list != NULL);
list->count = 0;
list->head = NULL;
}
3、循环单链表的扩容
static CycNode *BuyNode(ElemType val, CycNode *next)
{
CycNode *s = (CycNode *)malloc(sizeof(CycNode));
assert(s != NULL);
s->data = val;
if (next != NULL)
{
s->next
循环单链表是单链表的一种变形,其最后一个节点指针指向首节点,形成环状结构。带头结点的循环单链表便于执行插入和删除操作。本文将介绍循环单链表的存储结构、初始化、扩容、插入、删除和打印函数。
最低0.47元/天 解锁文章
744

被折叠的 条评论
为什么被折叠?



