数据结构与算法-链表1.2

声明

本文内容仅为自己学习中的理解,旨在将枯燥的内容以白话的形式表述出来,让自己及想学习数据结构的伙伴更好的理解,如文中有不正确或不准确的说法,还望各位大佬批评留言指正。谢谢

单链表、双向链表、环形链表、带哨兵链表

上次我们说了什么是线性表,本次继续学习,线性表的几种常见形式,单链表:
单链表顾名思义,只有一个链的表同上一篇

单链表:n个节点链结成一个链表,即为线性表的链式存储结构,因为此链表的每个节点中包含一个指针域,所以叫做单链表

现在我们来看每一个节点的含义,用JAVA描述,可以认为是N个同类型的对象,相互连接组成的这么一条链状的结果,叫做单链表。

因为要将这些对线连接起来,那肯定需要去记录他们的位置信息,通过还有这个对象本身的信息,因为我们可以用下面这张图来理解。

在这里插入图片描述 在图中我们能够看到多个使用数据对象相互连接在一起,每一个对象都存储了下一个对象的地址信息(没有下一个对象则下一个地址为空),这中存储方式也就是我们认识到的第一种-单链表。继续研究,这种方式的表,可能很直观的看到,它能进行正常的查询和存储,每一次查询都只能从表的第一个节点(首个节点)开始,一次又一次进行查询,这样显然效率不高。

​ 这时候有人提出能不能给每一个节点增加一个标签用它来记录上一个环节的地址呢?因此引出了第二种-【双向链表】,这种的和第一种有什么区别呢?显而易见,优点在于能够从任意一个节点去向上或者向下去寻找其他的节点信息。

​ 又隔了一段时间,又有人提出问题,就是第二种记录方式的效率不高,引入第三种【环形链表】,它的特点在于链中的尾结点的下一个对象的地址存储的是首节点的地址,因此形成了一个循环结构。

​ 对于第三种,依然可以继续优化,提出一个哨兵的概念用一个单独的没有任何意义的节点来指向真正的第一个节点,以此来优化显示的内容信息。

下一节,用示例的方式对单链表、双向链表、环形链表、带哨兵节点的链表进行深入的说明

。。。未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值