当前位置:网站首页>【愚公系列】2022年07月 Go教学课程 023-Go容器之列表
【愚公系列】2022年07月 Go教学课程 023-Go容器之列表
2022-07-31 17:44:00 【华为云】
一、Go容器之列表
1.列表的定义
列表是一种数据结构,由多元素成的有限序列,即按照一定的线性顺序排列而成的数据项的集合,在这种数据结构上可以进行元素的的插入,删除,修改,和查找。
列表的两种主要表现是数组和链表,栈和队列是两种特殊类型的列表。列表(list)底层常见的数据结构有: 单链表、双链表等。
2.Go中的列表
在 Go 语言中,列表的实现都在 container/list 包中,内部实现原理是双链表。
列表(list)能够方便高效地进行元素的删除、插入操作。
3.列表的声明
变量名 := list.New()//或var 变量名 = list.List4.列表的操作
4.1 列表添加元素
列表添加元素如下所示:
| 方法 | 功能 |
|---|---|
| InsertAfter(v interface{}, mark *Element) *Element | 在 mark 点后面插入元素 |
| InsertBefore(v interface{}, mark *Element) *Element | 在 mark 点前面插入元素 |
| PushFrontList(other *List) | 添加 other 列表中的元素到头部 |
| PushBackList(other *List) | 添加 other 列表中的元素到尾部 |
相关案例:
package mainimport ( "container/list" "fmt")func main() { l := list.New() l.PushFront("头部愚公") l.PushBack("尾部愚公") // 遍历 for i := l.Front(); i != nil; i = i.Next() { fmt.Println(i.Value) }}
其中 i := l.Front() 表示初始赋值,用来获取列表的头部下标;
然后每次会循环会判断 i != nil,若等于空,则会退出循环,否则执行 i.Next()继续循环下一个元素;
4.1 列表删除元素
package mainimport ( "container/list" "fmt")func main() { l := list.New() // 头部添加字符串 l.PushFront("愚公1号") // 尾部添加字符串 l.PushBack("愚公2号") // 尾部添加一个整型,并保持元素句柄 element := l.PushBack(1) // 在 1 之后添加字符串 2 l.InsertAfter("2", element) // 在 1 之前添加字符串 0 l.InsertBefore("0", element) for i := l.Front(); i != nil; i = i.Next() { fmt.Println(i.Value) } // 删除 element 对应的元素 l.Remove(element) // 遍历 for i := l.Front(); i != nil; i = i.Next() { fmt.Println(i.Value) }}
4.3 列表获取元素
4.3.1 获取列表头结点
package mainimport ( "container/list" "fmt")func main() { l := list.New() // 头部添加字符串 l.PushFront("愚公1号") // 尾部添加字符串 l.PushBack("愚公2号") // 尾部添加一个整型,并保持元素句柄 element := l.PushBack(1) // 在 1 之后添加字符串 2 l.InsertAfter("2", element) fmt.Println("Front =", l.Front().Value)}
4.3.2 获取列表尾结点
package mainimport ( "container/list" "fmt")func main() { l := list.New() // 头部添加字符串 l.PushFront("愚公1号") // 尾部添加字符串 l.PushBack("愚公2号") // 尾部添加一个整型,并保持元素句柄 element := l.PushBack(1) // 在 1 之后添加字符串 2 l.InsertAfter("2", element) fmt.Println("Front =", l.Back().Value)}
4.3.3 获取上一个结点
package mainimport ( "container/list" "fmt")func main() { //使用列表内置的 Prev() 函数,获取列表的上一个结点 listHaiCoder := list.New() listHaiCoder.PushFront("1") element := listHaiCoder.PushFront("2") //定义节点位置 listHaiCoder.PushFront("3") preElement := element.Prev() fmt.Println("preElement =", preElement.Value)}
4.3.4 获取下一个结点
package mainimport ( "container/list" "fmt")func main() { //使用列表内置的 Prev() 函数,获取列表的上一个结点 listHaiCoder := list.New() listHaiCoder.PushFront("1") element := listHaiCoder.PushFront("2") //定义节点位置 listHaiCoder.PushFront("3") preElement := element.Next() fmt.Println("preElement =", preElement.Value)}
边栏推荐
- ECCV 2022 华科&ETH提出首个用于伪装实例分割的一阶段Transformer的框架OSFormer!代码已开源!...
- MySQL - multi-table query
- Anaconda如何顺利安装CV2
- Mariabackup implements incremental data backup for Mariadb 10.3
- 【luogu P8326】Fliper(图论)(构造)(欧拉回路)
- spark报错OutOfMemory「建议收藏」
- MySQL---单行函数
- API for JD.com to obtain historical price information of commodities
- BOW/DOM(上)
- Taobao/Tmall get Taobao password real url API
猜你喜欢

2022 Android interview summary (with interview questions | source code | interview materials)

自动化测试—web自动化—selenium初识

Go basic part study notes

关于柱状图的经典画法总结

中文编码的设置与action方法的返回值

【NLP】什么是模型的记忆力!

MySQL---多表查询

联邦学习:联邦场景下的多源知识图谱嵌入

这位985教授火了!当了10年博导,竟无一博士毕业!

Combinatorics Notes (6) Associative Algebra of Locally Finite Partially Ordered Sets, Möbius Inversion Formula
随机推荐
adb shell 报错error: device unauthorized
Mariabackup实现Mariadb 10.3的增量数据备份
UserAgent 解析
研发过程中的文档管理与工具
flowable工作流所有业务概念
京东按关键字搜索商品 API
多数据中心操作和检测并发写入
MySQL---子查询
Cache and Database Consistency Solutions
Flutter set the background color of the statusbar status bar and APP method (AppBar) internal consistent color.
Unity 之 音频类型和编码格式介绍
MySQL---Create and manage databases and data tables
Introduction of Jerry voice chip ic toy chip ic_AD14NAD15N full series development
How to install CV2 smoothly in Anaconda
Golang go-redis cluster模式下不断创建新连接,效率下降问题解决
淘宝/天猫获得淘口令真实url API
Combinatorics Notes (6) Associative Algebra of Locally Finite Partially Ordered Sets, Möbius Inversion Formula
All-platform GPU general AI video supplementary frame super-score tutorial
AcWing 1282. 搜索关键词 题解((AC自动机)Trie+KMP)+bfs)
Get Douyin Video Details API