golang中container/list包

list包实现了双向链表的功能。

type Element
    func (e *Element) Next() *Element
    func (e *Element) Prev() *Element
type List
    func New() *List
    func (l *List) Back() *Element
    func (l *List) Front() *Element
    func (l *List) Init() *List
    func (l *List) InsertAfter(value interface{}, mark *Element) *Element
    func (l *List) InsertBefore(value interface{}, mark *Element) *Element
    func (l *List) Len() int
    func (l *List) MoveToBack(e *Element)
    func (l *List) MoveToFront(e *Element)(ol *List)
    func (l *List) PushBack(value interface{}) *Element
    func (l *List) PushBackList(ol *List)
    func (l *List) PushFront(value interface{}) *Element
    func (l *List) PushFrontList(ol *List)
    func (l *List) Remove(e *Element) interface{}

type Element


type Element struct {
    next, prev *Element
    list *List
    value interface{}
}

功能说明:链表中的一个节点
结构体字段:



1)next *Element:指向链表中的下一个节点的指针,最后一个节点的下一个节点为nil
2)next *Element:指向链表中的上一个节点的指针,第一个节点的上一个节点为nil
3)list *List:指向当前这个节点所属的链表的指针
4)value interface{}:该节点的内容,可以是任何对象

type List

type List struct {
    front, back *Element
    len         int
}

结构体字段:
1)front *Element:链表中的第一个节点的指针
2)back *Element:链表中的最后一个节点的指针
3)len int:链表中节点的个数

List结构体的方法
(1)func New() *List
返回值:
*List:空链表的指针
功能说明:
创建一个空链表,链表的长度为0,开头和末尾节点都是nil

(2)func (l *List) Back() *Element
返回值:
*Element:链表中最后一个节点的指针,如果链表长度为0,则为nil
功能说明:获得最后一个节点的指针,如果链表的长度为0,则为nil

(3)func (l *List) Front() *Element
返回值:
*Element:链表中第一个节点的指针,如果链表长度为0,则为nil
功能说明:获得第一个节点的指针,如果链表长度为0,则为nil

(4)func (l *List) Init() *List
返回值:
*List:初始化或清空后的链表
功能说明:
初始化或者清空链表,该方法调用后,链表的长度为0

(5)func (l *List) InsertAfter(value interface{}, mark *Element) *Element
参数列表:
1)value:要插入的数据的内容
2)mark:链表中的一个节点指针
返回值:
*Element:被插入的节点指针,该节点的Value为数据内容
功能说明:
把数据value插入到mark节点的后面,并返回被插入的节点。

(6)func (l *List) InsertBefore(value interface{}, mark *Element) *Element
参数列表:
1)value:要插入的数据的内容
2)mark:链表中的一个节点指针
返回值:
*Element:被插入的节点指针,该节点的value为数据内容
功能说明:
把数据value插入到mark节点的前面,并返回这个被插入的节点。

(7)func (l *List) Len() int
返回值:
int:链表中节点的个数

(8)func (l *List) MoveToBack(e *Element)
参数列表:
e:链表中的节点
功能说明:
把节点e移到链表的末尾

(9)func (l *List) PushBaackList(ol *List)
参数列表:
ol:将被插入到链表l末尾的链表
功能说明:
把一个链表存到链表末尾

(10)func (l *List) PushFront(value interface{}) *Element
参数列表:
value:将被存到链表开头的任意对象
返回值:
*Element:将存到开头的节点的指针
功能说明:
把一个对象存到链表开头,并返回这个节点

(11)func (l *List) PushFrontList(ol *List)
参数列表:
ol:将被插入到链表l开头的链表
功能说明:
把一个链表存到链表开头

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,744评论 0 38
  • 转载自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay阅读 11,403评论 1 5
  • 故事的开始 只记得你说话的样子 刚刚握住的那束光 它去哪了 还会回来吗 我想只记得你说话的样子就好 忽然之间 我抬...
    张幽游的鱼阅读 1,618评论 0 1
  • 网上有句话一直很火: “如果一个人真心喜欢你,即使捂住了嘴巴,还是会从眼睛里跑出来的。” 花花在给我讲自己的军恋故...
    林南安阅读 8,939评论 43 58
  • PS1 我不说他的姓名,就说他吧。他几乎每天都会来我们网点办理业务,一般都是早上10点左右。拿着一包25块钱的芙蓉...
    北络阅读 3,297评论 1 3