...

パッケージ list

import "container/list"
概要
目次

概要 ▾

list パッケージは双方向連結リストを実装します。

l を *List として,リストを反復処理するには,

for e := l.Front(); e != nil; e = e.Next() {
	// e.Value で何かをする
}

コード:

// 新しいリストを作成して,それにいくつかの数字を入れます。
l := list.New()
e4 := l.PushBack(4)
e1 := l.PushFront(1)
l.InsertBefore(3, e4)
l.InsertAfter(2, e1)

// リストを反復してその内容を表示します。
for e := l.Front(); e != nil; e = e.Next() {
    fmt.Println(e.Value)
}

出力:

1
2
3
4

type Element

Element は連結リストの要素です。

type Element struct {

    // この要素に格納されている値。
    Value interface{}
    // エクスポートされていないフィールドがあります
}

func (*Element) Next

func (e *Element) Next() *Element

Next は次のリスト要素または nil を返します。

func (*Element) Prev

func (e *Element) Prev() *Element

Prev は前のリスト要素または nil を返します。

type List

リストは双方向連結リストを表します。 List のゼロ値は,使用可能な空のリストです。

type List struct {
    // エクスポートされていないフィールドがあります
}

func New

func New() *List

New は初期化リストを返します。

func (*List) Back

func (l *List) Back() *Element

リストの最後の要素を返します。 リストが空の場合は, nil を返します。

func (*List) Front

func (l *List) Front() *Element

Front はリスト l の最初の要素を返します。 リストが空の場合は nil を返します。

func (*List) Init

func (l *List) Init() *List

Init はリスト l を初期化またはクリアします。

func (*List) InsertAfter

func (l *List) InsertAfter(v interface{}, mark *Element) *Element

InsertAfter は, mark の直後に値 v の新しい要素 e を挿入し, e を返します。 mark が l の要素ではない場合,リストは変更されません。 mark は nil であってはいけません。

func (*List) InsertBefore

func (l *List) InsertBefore(v interface{}, mark *Element) *Element

InsertBefore は, mark の直前に値 v の新しい要素 e を挿入し, e を返します。 mark が l の要素ではない場合,リストは変更されません。 mark は nil であってはいけません。

func (*List) Len

func (l *List) Len() int

Len はリスト l の要素数を返します。 複雑度は O(1) です。

func (*List) MoveAfter 1.2

func (l *List) MoveAfter(e, mark *Element)

MoveAfter は,要素 e を mark の後の新しい位置に移動します。 e または mark が l の要素ではない場合,または e == mark の場合,リストは変更されません。 要素と mark は nil であってはいけません。

func (*List) MoveBefore 1.2

func (l *List) MoveBefore(e, mark *Element)

MoveBefore は要素 e を mark の前の新しい位置に移動します。 e または mark が l の要素ではない場合,または e == mark の場合,リストは変更されません。 要素と mark は nil であってはいけません。

func (*List) MoveToBack

func (l *List) MoveToBack(e *Element)

MoveToBack は,要素 e をリスト l の最後に移動します。 e が l の要素ではない場合,リストは変更されません。 要素は nil であってはいけません。

func (*List) MoveToFront

func (l *List) MoveToFront(e *Element)

MoveToFront は要素 e をリスト l の先頭に移動します。 e が l の要素ではない場合,リストは変更されません。 要素は nil であってはいけません。

func (*List) PushBack

func (l *List) PushBack(v interface{}) *Element

PushBack は,リスト l の最後に値 v の新しい要素 e を挿入し, e を返します。

func (*List) PushBackList

func (l *List) PushBackList(other *List)

PushBackList は他のリストのコピーをリスト l の後ろに挿入します。 リスト l と他のリストは同じでもかまいません。 これらのリストは nil であってはいけません。

func (*List) PushFront

func (l *List) PushFront(v interface{}) *Element

PushFront は,リスト l の先頭に値 v の新しい要素 e を挿入し, e を返します。

func (*List) PushFrontList

func (l *List) PushFrontList(other *List)

PushFrontList は他のリストのコピーをリスト l の前に挿入します。 リスト l と他のリストは同じでもかまいません。 これらのリストは nil であってはいけません。

func (*List) Remove

func (l *List) Remove(e *Element) interface{}

Remove は,e がリスト l の要素である場合,l から e を削除します。 要素値 e.Value を返します。 要素は nil であってはいけません。