数据结构,高效率循环链表一

数据结构之循环链表C++
我们都知道线性结构的链表非常方便,非常好用。但是真的就是最好的吗?很显然在程序设计中没有最好,只有最实用的。我们在使用链表时,会不断开空间,再释放空间。对于大量重复的使用链表来说,这样是比较消耗效率的。
鉴于以上所言,今天给大家分享一种用内存换效率的循环链表。设计思路如下:
既然开空间,释放空间比较耗效率,那咱们就把链表中删除的空间,临时储存起来,等到下次需要新空间的时候,直接提取出来用如下图:在这里插入图片描述
下面就开始创建循环链表
这里我们使用双向链表结构,因为要不不断取节点,存节点,双向链表的可读性更高
首先创建一个泛型的双向链表
在这里插入图片描述
链表创建好之后,就是初始化,4个基本。构造,析构,复制构造,同类赋值
为了简化方便使用,复制构造,同类赋值的时候,库节点对应的内容其实不用拷贝
因为对于用户来说有用的数据只是头节点对应的,这里我就不写了 留到下次分享把!
在这里插入图片描述
初始化已经完成直接上核心代码把
我们在增加一个节点的时候,双向链表头尾相连,其实有一句比较简单的话术
new 一个新节点,然后链表的尾部等于头节点的上一个,我称为尾节点
那么这句话术就是
尾节点的下一个是新节点,新节点上一个是尾节点
新节点的下一个是头节点 ,头节点的上一个是新节点
在这里插入图片描述
既然我们已经知道如何创建一个节点,并且知道怎么链接
那么接下来就该考虑 这个新节点怎么来?
当然数据结构的库节点不存在数据时这个节点肯定是new 出来
当数据结构存在数据就从库节点拿
在这里插入图片描述
如上图所示,红圈的代码应该拿下来。为了看得更清楚,就先这样。
首先创建一个新节点,判断库节点没有数据时就像上面所说的创建一个新节点
而库节点有数据的时候 新节点就是库节点的最后一个,然后断开新节点链接
再执行一遍红圈的内容,既然有了重复代码,再考虑到后期删除节点的问题,
不如把链接节点,和取出节点封装成两个函数
在这里插入图片描述
基本上循环链表的核心代码已经分享一半了,将分三次分享。希望对您有用!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流通币

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值