Go语言list(列表)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言list(列表)相关的知识,希望对你有一定的参考价值。
参考技术A 2021-11-10列表是一种非连续的存储容器,有多个节点组成,节点通过一些变量记录彼此之间的关系
单链表和双链表就是列表的两种方法。
原理:A、B、C三个人,B懂A的电话,C懂B的电话只是单方知道号码,这样就形成了一个单链表结构。
如果C把自己的号码给B,B把自己的号码给A,因为是双方都知道对方的号码,这样就形成了一个双链表结构
如果B换号码了,他需要通知AC,把自己的号码删了,这个过程就是列表的删除操作。
在Go语言中,列表使用 container/list 包来实现,内部的实现原理是双链表,列表能够高效地进行任意位置的元素插入和删除操作。
列表初始化的两种办法
列表没有给出具体的元素类型的限制,所以列表的元素可以是任意类型的,
例如给列表中放入了一个 interface 类型的值,取出值后,如果要将 interface 转换为其他类型将会发生宕机。
双链表支持从队列前方或后方插入元素,分别对应的方法是 PushFront 和 PushBack。
列表插入函数的返回值会提供一个 *list.Element 结构,这个结构记录着列表元素的值以及与其他节点之间的关系等信息,从列表中删除元素时,需要用到这个结构进行快速删除。
遍历完也能看到最后的结果
学习地址: http://c.biancheng.net/view/35.html
Go语言列表list获取元素
Golang的列表元素的获取可以使用内置的 Front 函数获取头结点,使用 Back 函数获取尾结点,使用 Prev 获取前一个结点,使用 Next 获取下一个结点。
1、获取列表头结点
Front() *Element
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用列表内置的 Front() 函数,获取列表的头结点
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
element := listHaiCoder.Front()
fmt.Println("Front =", element.Value)
}
使用列表内置的 Front() 函数,获取列表的头结点。
2、获取列表尾结点
Back () *Element
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用列表内置的 Back() 函数,获取列表的尾结点
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
element := listHaiCoder.Back()
fmt.Println("Back =", element.Value)
}
使用列表内置的 Back() 函数,获取列表的尾结点。
3、获取上一个结点
Prev() *Element
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用列表内置的 Prev() 函数,获取列表的上一个结点
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
element := listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
preElement := element.Prev()
fmt.Println("preElement =", preElement.Value)
}
使用列表内置的 Prev() 函数,获取列表的上一个结点。
4、获取下一个结点
Next() *Element
package main
import (
"container/list"
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用列表内置的 Next() 函数,获取列表的下一个结点
listHaiCoder := list.New()
listHaiCoder.PushFront("Hello")
element := listHaiCoder.PushFront("HaiCoder")
listHaiCoder.PushFront("嗨客网")
nextElement := element.Next()
fmt.Println("nextElement =", nextElement.Value)
}
使用列表内置的 Next() 函数,获取列表的下一个结点。
到此 Go语言列表list获取元素介绍完成。
以上是关于Go语言list(列表)的主要内容,如果未能解决你的问题,请参考以下文章