github.com/code-reading/golang@v0.0.0-20220303082512-ba5bc0e589a3/coding/container/02-list.go (about)

     1  package main
     2  
     3  import (
     4  	"container/list"
     5  	"fmt"
     6  )
     7  
     8  func main() {
     9  	var l = list.New()    // 初始化一个链表
    10  	e0 := l.PushBack(10)  // 10
    11  	e1 := l.PushFront(11) // 11 10
    12  	e2 := l.PushBack(7)   // 11 10 7
    13  
    14  	l.InsertBefore(3, e0)  // 11 3 10 7
    15  	l.InsertAfter(196, e1) // 11 196 3 10 7
    16  	l.InsertAfter(129, e2) // 11 196 3 10 7 129
    17  	l.MoveToBack(e1)       // 196 3 10 7 129 11
    18  	l.MoveToFront(e2)      // 7 196 3 10 129 11
    19  
    20  	// 从链表前出元素, 停止条件是 元素e 不为空, 迭代时 e = e.Next()
    21  	for e := l.Front(); e != nil; e = e.Next() {
    22  		fmt.Printf("%v ", e.Value)
    23  	}
    24  }
    25  
    26  // output 7 196 3 10 129 11