Golang中的list解析

2021-09-21 06:22:51 字數 2571 閱讀 8568

list是乙個雙向鍊錶。該結構具有鍊錶的所有功能。

type element

type element struct    //在元素中儲存的值

}

func (e *element) next() *element //返回該元素的下乙個元素,如果沒有下乙個元素則返回nil

func (e *element) prev() *element//返回該元素的前乙個元素,如果沒有前乙個元素則返回nil。

type list

func new() *list //返回乙個初始化的list

func (l *list) back() *element //獲取list l的最後乙個元素

func (l *list) front() *element //獲取list l的第乙個元素

func (l *list) init() *list //list l初始化或者清除list l

func (l *list) insertafter(v inte***ce{}, mark *element) *element //在list l中元素mark之後插入乙個值為v的元素,並返回該元素,如果mark不是list中元素,則list不改變。

func (l *list) insertbefore(v inte***ce{}, mark *element) *element//在list l中元素mark之前插入乙個值為v的元素,並返回該元素,如果mark不是list中元素,則list不改變。

func (l *list) len() int //獲取list l的長度

func (l *list) moveafter(e, mark *element) //將元素e移動到元素mark之後,如果元素e或者mark不屬於list l,或者emark,則list l不改變。

func (l *list) movebefore(e, mark *element)//將元素e移動到元素mark之前,如果元素e或者mark不屬於list l,或者emark,則list l不改變。

func (l *list) movetoback(e *element)//將元素e移動到list l的末尾,如果e不屬於list l,則list不改變。

func (l *list) movetofront(e *element)//將元素e移動到list l的首部,如果e不屬於list l,則list不改變。

func (l *list) pushback(v inte***ce{}) *element//在list l的末尾插入值為v的元素,並返回該元素。

func (l *list) pushbacklist(other *list)//在list l的尾部插入另外乙個list,其中l和other可以相等。

func (l *list) pushfront(v inte***ce{}) *element//在list l的首部插入值為v的元素,並返回該元素。

func (l *list) pushfrontlist(other *list)//在list l的首部插入另外乙個list,其中l和other可以相等。

func (l *list) remove(e *element) inte***ce{}//如果元素e屬於list l,將其從list中刪除,並返回元素e的值。

舉例說明其用法。

package main

import (

"container/list"

"fmt"

)func main()

for e := l.front(); e != nil; e = e.next()

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.println("")

l.movebefore(l.front().next(), l.front()) //首部兩個元素位置互換

for e := l.front(); e != nil; e = e.next()

fmt.println("")

l.movetofront(l.back()) //將尾部元素移動到首部

for e := l.front(); e != nil; e = e.next()

fmt.println("")

l2 := list.new()

l2.pushbacklist(l) //將l中元素放在l2的末尾

for e := l2.front(); e != nil; e = e.next()

fmt.println("")

l.init() //清空l

fmt.print(l.len()) //0

for e := l.front(); e != nil; e = e.next()

}

stl中list的sort 函式解析

list不能使用stl演算法sort 必須使用自己的sort member function,因為stl演算法sort 只接受randomaccessiterator,而list提供的是 bidirectional iterators 演算法描述 templatevoid list sort tem...

Java中List的remove方法解析

1 public e remove int index 方法,它的作用是 移除此列表中指定位置上的元素,向左移動所有後續元素 將其索引減 1 其返回值是從列表中移除的元素。演示 如下 arraylistlist new arraylist list.add 小明 list.add 小花 list.a...

golang中解析yaml配置檔案

首先看乙個簡單的例子,現在我們有乙個config.yaml的配置檔案,內容為 username raily password 123a那麼我們可以像下邊這樣解析 type config struct var databaseconfig config 解析函式 func load path stri...