声明
本文内容仅为自己学习中的理解,旨在将枯燥的内容以白话的形式表述出来,让自己及想学习数据结构的伙伴更好的理解,如文中有不正确或不准确的说法,还望各位大佬批评留言指正。谢谢
单链表、双向链表、环形链表、带哨兵链表
上次我们说了什么是线性表,本次继续学习,线性表的几种常见形式,单链表:
单链表顾名思义,只有一个链的表同上一篇
单链表:n个节点链结成一个链表,即为线性表的链式存储结构,因为此链表的每个节点中包含一个指针域,所以叫做单链表
现在我们来看每一个节点的含义,用JAVA描述,可以认为是N个同类型的对象,相互连接组成的这么一条链状的结果,叫做单链表。
因为要将这些对线连接起来,那肯定需要去记录他们的位置信息,通过还有这个对象本身的信息,因为我们可以用下面这张图来理解。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b0fd68a7c0389905b38ac96a4fcad870.png)
这时候有人提出能不能给每一个节点增加一个标签用它来记录上一个环节的地址呢?因此引出了第二种-【双向链表】,这种的和第一种有什么区别呢?显而易见,优点在于能够从任意一个节点去向上或者向下去寻找其他的节点信息。
又隔了一段时间,又有人提出问题,就是第二种记录方式的效率不高,引入第三种【环形链表】,它的特点在于链中的尾结点的下一个对象的地址存储的是首节点的地址,因此形成了一个循环结构。
对于第三种,依然可以继续优化,提出一个哨兵的概念用一个单独的没有任何意义的节点来指向真正的第一个节点,以此来优化显示的内容信息。
下一节,用示例的方式对单链表、双向链表、环形链表、带哨兵节点的链表进行深入的说明
。。。未完待续