数据结构——循环单链表

循环单链表是单链表的一种变形,其最后一个节点指针指向首节点,形成环状结构。带头结点的循环单链表便于执行插入和删除操作。本文将介绍循环单链表的存储结构、初始化、扩容、插入、删除和打印函数。
摘要由CSDN通过智能技术生成

循环单链表是单链表的另一种形式,其结构特点链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环。和单链表相同,循环链表也有带头结点结构和不带头结点结构两种,带头结点的循环单链表实现插入和删除操作较为方便。

循环单链表只是将单链表的尾结点的指针指向头结点,就直接书写代码,有一点需要主要的是在循环单链表中只有头结点时,将头结点的指针域不指向空,而是执行自己。

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值