在go语言的标准库里,有container/list库可以提供链表相关的功能。

(1)先看代码,链表常用的两个方法:PushBack和PushFront

package main

import (
    "fmt"
    "container/list"
)

func main() {
    fmt.Println("Go Linked Lists Tutorial")
    mylist := list.New()
    mylist.PushBack(1)
    mylist.PushFront(2)
}
这时候,链表里存的数据是: 2 ---> 1

(2)然后,我们从链表的头部Front开始,遍历输出链表。

package main

import (
        "container/list"
        "fmt"
)

func main() {
        mylist := list.New()
        mylist.PushBack(1)
        mylist.PushFront(2)

        for element := mylist.Front(); element != nil; element = element.Next() {
                fmt.Println(element.Value)
        }

}

输出结果为:

2
1

(3)删除链表中的一个元素Remove方法

package main

import (
    "fmt"
    "container/list"
)


func main() {

    mylist := list.New()
    mylist.PushBack(1)
    mylist.PushFront(2)
    
    for element := mylist.Front(); element != nil; element = element.Next() {
        if element.Value != 1 {
            mylist.Remove(element) //删除链表中值不为1的元素
        }
    }
    
    for element := mylist.Front(); element != nil; element = element.Next() {
        fmt.Println(element.Value) //遍历输出当前链表中的元素
    }

}
这时候,链表里存的数据只有:1(2被remove掉了)

Done,以上讲了Linked List的基本使用方法。