全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 模拟技术 >

说说Go里面的链表操作

时间:2022-08-17 11:07

人气:

作者:admin

标签: 链表  go语言  内存 

导读:按照逻辑结构来说,他们应该是一个挨着一个的,但是在实际存储当中并没有像这样连续,可能会散落在各个内存区里面。...

一、链表的概念

为了方便同学们理解,我画了一个图:

poYBAGL8WoeAayNXAAClnjzwFos168.png

上条是单向链表,下面是双向链表。

两者区别是啥呢?

从查找速度来讲,双向的会更快些,但是缺点也是占用空间大些。

所以如果项目里面对空间要求高的话,就用前者,回头用时间换空间。

按照逻辑结构来说,他们应该是一个挨着一个的,但是在实际存储当中并没有像这样连续,可能会散落在各个内存区里面。

关于链表的作用就不在这里赘述了,感兴趣的面向搜索引擎提问吧。

二、Go 里面的链表操作

go 的标准库里面其实为我们提供了一个链表功能,在我们的 container/list 包里面。

所以很多时候我们不需要再手动实现,可以这样使用:

poYBAGL8WpiAANn-AABJEHaycYc192.png

他为我们提供了很多方法可以使用:

poYBAGL8Wq2Ae13JAAE9uaBUyFE162.png

比如插入到最后面,还是哪个的后面,感兴趣的可以去详细看下。

上面的代码执行结果是:

pYYBAGL8Wr6AIfGfAAARRAc53-E525.png

二、一些常用操作

1、移动交换

假如我们需要调换 2 和 3 的位置:

poYBAGL8WtOAatL6AABTjxFNtrA286.png

我们可以使用他的 MoveAfter 方法进行移动。

执行结果:

poYBAGL8WuaAJdVcAAASpN4J_bI783.png

2、插入

加入我们需要在 2 后面插入一个 2.5:

pYYBAGL8WviAbm3CAABdl-bGMqA676.png

我们可以使用 InsertAfter 方法进行操作。

执行结果为:

poYBAGL8WxSAJabLAAAWrD_wDuE050.png

更多的操作方法就不一一举例了哈。



审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信