Go语言中container/list包,list实际上是双向链表,和java一样,在插入和删除操作中会比较高效。
样例代码如下
package main import ( "container/list" "fmt" ) func test_list1() { var list1 = list.New() list1.PushBack("a") list1.PushBack(1) list1.PushFront("b") var list2 = list.New() list2.PushFront("c") list2.PushBackList(list1) for i := list2.Front(); i != nil; i = i.Next() { fmt.Println(i.Value) } for i := list2.Back(); i != nil; i = i.Prev() { fmt.Println(i.Value) } fmt.Println(list2.Len()) } func main() { test_list1() }
执行结果
c
b
a
1
1
a
b
c
4
注意
1、通过list.New()来初始化链表对象。
2、可以从前面插入元素(PushFront),也可以从后面插入元素(PushBack)。
3、可以通过使用元素内置的Next()、Pre() 方法来实现链表的遍历。可以从前往后也可以从后往前。