Golang列表数据结构,栈,队列

210 阅读1分钟

Go中,列表使用container/list包来实现,内部是双链表

声明方法: 1 通过container/list包的New方法初始list

变量名 := list.New()
复制代码

2 通过声明初始化list

var 变量名 list.List
复制代码

列表没有元素限制,可以是任意类型。 前方插入元素:PushFront 后方插入元素:PushBack 这两种方法都会返回一个list.Element结构,如果在以后的使用中需要删除插入的元素,只需要通过list.Element配合Remove()方法进行删除,可以让删除更加效率化。

添加元素示例:

l := list.New()
l.PushBack("fist")
l.PushFront(67)
复制代码

列表插入元素的方法如下表所示。

方法功能
InsertAfter(v interface(),mark *Element) *Element在mark之后插入,mark由其他函数提供
InsertBefore(v interface(),mark *Element) *Element在mark之前插入,mark由其他函数提供
PushBackList(other *List)添加other列表元素到尾部
PushFrontList(other *List)添加other列表元素到头部

从列表中删除元素:列表的插入函数返回值会提供一个*list.Element结构,这个结构记录着列表元素的值及其他节点之间的关系等信息,从列表中删除元素时,需要用到这个结构进行快速删除。

import "container/list"

func mian(){
    l := list.new()
    
    //尾部添加
    l.PushBack("canon")
    
    //头部添加
    l.PushFront(67)
    
    //尾部添加后保存元素句柄
    element := l.PushBack("fist")
    
    //在fist之后添加high
    l.InterAfter("high",element)
    
    //在fist之前添加noon
    l.InterBefore("noon",element)
    
    //使用element删除指定元素
    l.Remove(element)