golang中container/list包用法
list是一个双向链表。该结构具有链表的所有功能。 type Element struct {
Value interface{} //在元素中存储的值
}
func (e *Element) Next() *Element //返回该元素的下一个元素,如果没有下一个元素则返回nil func (e *Element) Prev() *Element//返回该元素的前一个元素,如果没有前一个元素则返回nil。 type List 举例说明其用法。
package main import ( "container/list" "fmt" ) func main() { l := list.New() //创建一个新的list for i := 0; i < 5; i++ { l.PushBack(i) } for e := l.Front(); e != nil; e = e.Next() { fmt.Print(e.Value) //输出list的值,01234 } fmt.Println("") fmt.Println(l.Front().Value) //输出首部元素的值,0 fmt.Println(l.Back().Value) //输出尾部元素的值,4 l.InsertAfter(6,l.Front()) //首部元素之后插入一个值为10的元素 for e := l.Front(); e != nil; e = e.Next() { fmt.Print(e.Value) //输出list的值,061234 } fmt.Println("") l.MoveBefore(l.Front().Next(),l.Front()) //首部两个元素位置互换 for e := l.Front(); e != nil; e = e.Next() { fmt.Print(e.Value) //输出list的值,601234 } fmt.Println("") l.MoveToFront(l.Back()) //将尾部元素移动到首部 for e := l.Front(); e != nil; e = e.Next() { fmt.Print(e.Value) //输出list的值,460123 } fmt.Println("") l2 := list.New() l2.PushBackList(l) //将l中元素放在l2的末尾 for e := l2.Front(); e != nil; e = e.Next() { fmt.Print(e.Value) //输出l2的值,460123 } fmt.Println("") <span style="color:#FF0000;">l.Init() //清空l</span> fmt.Print(l.Len()) //0 for e := l.Front(); e != nil; e = e.Next() { fmt.Print(e.Value) //输出list的值,无内容 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |