Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 1.89 KB

FifoList.md

File metadata and controls

43 lines (30 loc) · 1.89 KB

type List

片方向連結リストを提供するモジュールです。type Nodeが使われています。
連結順でのノード操作は、Front()で生成したlist.Iterator interfaceを利用します。

import

import "github.com/l4go/list"

vendoringして使うことを推奨します。

サンプルコード

example

メソッド概略

func NewFifoList(free func(interface{})) *FifoList

双方向連結リスト(*List)を生成します。 free引数で、ノード削除時の処理を指定できます。消去時に特殊な処理が必要ない場合はnilを指定します。

func (lst *FifoList) Move() *FifoList

全要素を譲渡した*Listを生成し、この操作をしたリストを空にします。

主に、リストを他の処理へ譲渡する場合の、メモリ解放処理のコードを単純化するために使います。

Move()を使うことで、リストを他の処理に譲渡した場合の、Clear()による多重なメモリ解放が防げます。 これによりdeferなどでの、無条件なClear()呼び出しが可能になります。(結果的にソースコードをシンプルにすることが出来ます。)

func (lst *FifoList) IsEmpty() bool

リストの要素が空の時にtrueを、それ以外の時はfalseをかえします。

func (lst *FifoList) Clear()

保持しているノードを全て開放します。 NewList()で指定された初期化処理も合わせて実行します。

func (lst *FifoList) PopFront() (interface{}, bool)

先頭の要素を取り出します。

func (lst *FifoList) PushBack(val interface{}) *Node

末尾に要素を追加します。

func (lst *FifoList) Front() Iterator

先頭要素から始まる末尾方向へ辿るIterator interfaceを生成します。