数据结构——双向链表(2)

作者:几冬雪来

时间:2023年3月17日

内容:数据结构双向链表及顺序表和各种链表有什么区别讲解

目录

前言: 

 双向链表:

1.查找与删除值: 

2.释放链表: 

3.单向链表和双向链表和顺序表: 

顺序表和链表的区别:

结尾: 


前言: 

在上一篇博客我们讲解的双向链表中的一些大概知识点,但是双向链表的内容还没有结束,为了让我们再多了解一些双向链表的知识,同时也给我们链表这个板块的学习画上一个完美的句号,今天我们继续来讲——双向链表。 

 双向链表:

在上一篇博客中我们讲解了带头双向链表的一些操作,并且也声明了带头双向链表和单向链表与顺序表的一些区别之处,其中也不妨有它们自己的优势所在。

1.查找与删除值: 

先前一篇博客中我们学习了一些双向链表的操作,类似尾插尾删等等·,今天我们就来完善我们的系统。

那么如何在我们的链表中查找一个值并在找到之后将其删除呢?

在这里我们创建一个函数来查找我们的值,首先进入函数就要先进行断言。接下来定义一个我们查找的起始点,因为第一个结点为哨兵位,因此我们需要next才能找到真正有效的结点。因为带头双向链表是一个循环因此如果找到了我们返回cur的值,如果cur回到哨兵位就说明我们没有找到,这个时候就要返回空。  

接下来就是删除数据了。

在上一篇博客中我们写过类似的形式,这里也就不过多的进行讲解了。直接写出来即可,下来1就是运行我们的代码了。

 从结果上来看,我们成功的找到了3这个值的位置,并在找到后对其进行了删除的操作。这也就说明了我们的代码的可行性。

但是在我们删除的时候要注意不能删除哨兵位的头结点,因为这会打乱我们的结构。 

同样的这个代码经过一些修改也可以用来代替头删和尾删的代码。 

2.释放链表: 

在我们完成了双向循环链表后,我们要将这个链表释放掉。那么释放链表又应该这么做呢? 

这里的释放整个链表和我们查找某一个元素后将其删除释放有异曲同工之意。那我们的代码要去怎么书写它呢? 

在删除链表中,开始还是断言操作,而后就是找我们链表中的第一个有效结点。接下来是循环,如果cur没有回到哨兵位的头结点,我们的循环就一直执行。在循环中我们先创建一个变量next用它来保存我们要删除值的下一个结点,然后就删除的结点进行释放,最后cur = next让cur指向下一个值。当全部有效结点删除完了之后我们还要将哨兵位的头结点进行删除

3.单向链表和双向链表和顺序表: 

到这里,我们的单向链表和双向带头链表基本就都讲解完了。

但是数据结构学到现在加上数据结构,我们只是学习了它们的操作方法和原理,它们分别有什么优势和分别要在哪里运用,我们就大概的讲解一下吧。

首先是我们单向链表的运用。

在日常学习或者是毕业后出去找工作的话,数据结构中的单向链表是我们需要注意的一个板块,平时会被经常使用在复杂顺序结构的子结构和OJ题当中。同时我们也讲解过,链表一共有八大种类,有一些就是由单向链表稍加修改得出,比如循环链表,带头链表等,根据自身的情况决定使用的类型。

然后是链表中带头双向链表的使用。

  

介绍单向链表之后,接下来就是带头双向链表。带头双向链表一般在数据结构中是用于链表存储数据对比起顺序表和单向循环链表,带头双向链表要轻松得多,拿单向链表举例,它只是头插和头删较为方便,其余的操作并没有多简单。

而和顺序表比较,带头双向链表的优势也是很明显,如果空间不足的话,这里我们需要对顺序表进行扩容的操作,但是带头双向链表不用,我们只需要按需申请即可

顺序表的优势所在 

那么到这里我们讲解了单向链表的运用地方,同时也讲了带头双向链表的优势所在,那么顺序表又有什么优点所在呢?这里我们来说明一下。

如果我们想进行下标访问的时候,我们可以使用链表来进行下标访问的操作但是对比起顺序表的下标访问的操作,链表的访问方法的性能比不上顺序表。总结来说,也就是在数据结构中我们依旧可以对我们链表进行排序,但是它的性能比不上顺序表的排序

这里也就是我们开始学习顺序表的时候说明的,顺序表和链表之间优势互补的操作

顺序表和链表的区别:

结尾: 

到这里我们的数据结构链表部分的内容也就告一段落了,同时在最后我们也阐明了顺序表与链表之间,单向链表与带头双向链表之间各自的优势区间和应用场所,让我们学会运用的同时也知道了在哪里运用。最后希望这篇博客能为给我带来新的知识。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值