数据结构——循环链表

目录

结构体的设计 

初始化

插入——头插 

插入——尾插

插入——按位置插

删除——头删

查找

判空

清空——调用销毁函数就好

销毁1——调用尾删

销毁2——正常用指针进行销毁

展示

测试用例

运行结果


 在学习循环链表之前,我们需要先知道单链表~

https://blog.csdn.net/m0_70184760/article/details/124728218?spm=1001.2014.3001.5501https://blog.csdn.net/m0_70184760/article/details/124728218?spm=1001.2014.3001.5501      循环链表其实就是把单链表的尾结点的next域不指向NULL,而是指向头结点的地址

我们直接来看代码吧~  代码设计跟单链表的没差多少,主要就是注意尾结点指针域的修改就行了

结构体的设计 

typedef int ElemType;

typedef struct CNode {
	ElemType data;	//数据域
	struct CNode* next;	//指针域
}CNode,*PCNode;

初始化

这里的初始化和单链表的是一样的呢~

//初始化
void Init_CList(PCNode plist) {
	assert(plist != NULL);
	if (plist == NULL) return;

	//头结点的数据域不存放内容,所以不用初始化

	plist->next = plist;

}

在这里再提醒一下哦~   

结点自身地址和此结点的指针域是不一样的,结点的指针域是其下一个要指向结点的自身地址

插入——头插 

bool Insert_head(PCNode plist, ElemType val) {
	assert(plist != NULL);
	if (plist == NULL) return false;

	struct CNode* pnewnode = (struct CNode*)malloc(sizeof(struct CNode));

	assert(pnewnode != NULL);
	if (pnewnode == NULL) return false;

	pnewnode->data = val;
	pnewnode->next = plist
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值