第八章:第6节 PHP数据结构与算法——环形链表

更新于:2017-06-24 17:07:53

尾节点的next不指向null了,指向前面的节点(大多是指向第一个数据节点),整个链表形成一个环,这就是环形链表。


环形链表比单链表更实用,可以解决很多问题,比如十二星座:


更适合用环形链表去实现,“双鱼座”结束了又变回了“白羊座”。


环形链表的优点:


1、功能增强了(循环链表只是在单链表的基础上做了一个加强)。


2、循环链表可以完全取代单链表的使用。


3、循环链表的 Next 和 Current 操作可以高效的遍历链表中的所有元素


环形链表的缺点:


代码复杂度提高了(成也萧何败萧何)


环形链表的数据操作设计原理演示:


楠神先用几个图示演示环形链表的数据操作原理,下一节继续分享韩顺平的环形链表的笔记,一个丢手绢的问题(约瑟夫问题)。


插入操作:


1、普通插入数据(和单链表是一样的)


1.png


2、尾插法


1.png

分析:最后一个结点的 next 指针指向新添加的结点,新结点的 next 指向第一个结点。


3、头插法


1.png

分析:新节点指向当前的第一个结点,head节点、尾结点指向新节点。


4、第一次插入节点

1.png


分析:尾节点指针指向第一个数据节点(即自己指向自己)


删除操作:


1、删除普通节点


1.png


2、删除头节点


1.png

分析:head节点、尾结点指向第二个数据节点