龙空技术网

深入浅出数据结构之循环链表

小猿圈儿 117

前言:

现时兄弟们对“循环链表操作”可能比较注重,朋友们都需要了解一些“循环链表操作”的相关资讯。那么小编也在网上搜集了一些对于“循环链表操作””的相关知识,希望各位老铁们能喜欢,看官们一起来学习一下吧!

1.1 什么是循环链表?

循环链表跟单链表也没有差别很多,只是在某些细节上的处理方式会稍稍不同。单链表中,要找到其中某个节点只需要从头节点开始遍历链表即可,但是有些时候我们的想法是,能不能从任意节点开始遍历,也能找到我们需要的那个节点呢?

这个实现也很简单,把整个链表串成一个环问题就迎刃而解了。所以可以把循环链表的定义如下:

将单链表中的尾节点的指针域由NULL改为指向头结点,使整个单链表形成一个环,这种头尾相接的单链表就可以称之为**单循环链表,简称循环链表(circular linked list)。

1.2 循环链表图示

这里我们讨论的链表实在有一个头结点的情况下

当链表为空的时候表示如下:

链表为空

对于非空链表可以表示如下:

链表非空

对于循环链表这种设计,我们在遍历的时候的结束条件就不再是p为空的时候结束了。而是p等于头结点的时候遍历才完成。

有了头结点,我们可以轻而易举访问第一个节点。但是当要访问最后一个节点时,却要将整个链表扫一遍,效率就很低了。那么有没有更好的办法呢?

当然是有的,只不过这里我们需要将循环链表再做一个小小的改进,具体表现为:

添加尾指针的循环链表

从上图可以看出,我们抛弃了以往的头指针,取而代之的是采用一个尾指针指向了最后一个节点。因为链表是循环的,当我们需要访问第一个节点时就很容易了!只需要尾指针往后走一个就到前面了。

标签: #循环链表操作 #循环链表是什么 #循环链表是什么意思 #循环链表图片 #循环链表实现的条件是什么