この記事はから来ている:CSDNのブログ
おかげで著者:ACHelloWorld
オリジナルを参照してください:ゴー言語(コンテナの説明)
コンテナ:容器| 容器
ヒープ、リストや指輪:としては、3つの部分を含んで見ることができます。以下が導入されました
1.ヒープ
ヒープは、ヒープであり、ソース、共通のデータ構造であり、インタフェースは実用に実装する必要が提供されます。
以下は、ヒープの使用上の例です。
コード:
主パッケージ のインポート( 「FMT 」 「コンテナ/ヒープ」 ) // ヒープがメソッドを実装するためのインタフェース必要提供 タイプヒープ[] INT // トップスタックの構成は、それが唯一のシンボル下記必要大きなパイルトップ変化、小さい FUNCを(H *ヒープ)以下(I、J INT)BOOL { リターン(* H)[I] <(* H)[J] } FUNC(H *ヒープ)スワップ(I、JのINT ){ ( * H)[ I]、(H *)[J] =(H *)[J](* H)[I] } FUNC(Hは *ヒープ)LEN()INT { リターンでlen(* H) } FUNC(H*ヒープ)ポップ()インターフェース{} { X: =(* H)h.Len() - 1 ] * H =(H *):h.Len() - 1 ] 戻りX } FUNC(H *ヒープ)プッシュ(X インターフェイス{}){ * H =アペンド(* H、X。(INT )) } FUNC(H *ヒープ)を除去(IDX INT)インタフェース{} { h.Swap(IDX、h.Len( ) - 1 ) を返すh.Pop() } メインFUNC(){ // 创建一个ヒープ H:=&ヒープ{} heap.Init(H) //ヒープへの挿入要素 h.Push(5 ) h.Push(2 ) h.Push(1 ) h.Push(8 ) h.Push(4 ) h.Push(6 ) h.Push(2 ) // 出力要素のヒープ、アレイ、元の配列の等価 fmt.Println(H) // これは良いヒープ確立reheapifyなければならない heap.Init(H) // の配列の要素を対応する小杭上部位置 FMTを。 println(H) // 標識要素5、及び0から添字開始除去 (h.Remove 5 ) // スタックの形で出力 するための h.Len()> 0 { fmt.Printf(" %dの" 、heap.Pop(H)) } fmt.Println() }
2.リスト
次のようにリストを二重に使用されている、リストタイプリンクされています
コード:
主パッケージ のインポート( " FMT " " コンテナ/リスト" ) FUNCメイン(){ // 二重連結リストを作成 LS:= list.New() // 二重連結リスト26の小文字の文字に挿入する ための I:= 97 ; I < 123 ; I ++ { ls.PushFront(I) // PushFront()ヘッド部分の代わりに挿入され、同一のプッシュバック()に代わって後から挿入 } // 二重リンクリストLSのすべての文字を反復処理 するための IT:= ls.Front() ;それは= ;! nilを= it.Next(){ fmt.Printf(" %のC " 、it.Value) } fmt.Printlnを() }
List
そして、Element
。前者は、リスト要素の構造を表す(以下リストと呼ぶ)二重リンクリストを、達成しました。
List
そして、Element
構造体のすべてのタイプ。構造タイプは、彼らがその特定の構造になりますゼロ値を持っている特性を、持っていますが、何の価値ない任意のカスタムコンテンツ、シェルの同等
主な方法のリスト:
MoveBefore
:他の要素の前に与えられた要素
MoveAfter
:別の要素の後ろに指定された要素の移動
MoveToFront
:指定した要素は、リストの最前線に移動させ、
MoveToBack
:指定した要素は、リストの最後端まで移動させ、
Front
:リストの最前線を取得します。
Back
:最後の最後のリストを取得します。
InsertBefore
指定された要素の前に新しい要素を挿入します。
InsertAfter
:指定された要素の後に新しい要素を挿入
PushFront
:リストの先頭に新しい要素を挿入するために使用します。
PushBack
:リストの先頭に新しい要素を挿入するために使用します。
3.リング
リングは、円形のリンクリストでは、次のコードの特定の使用を参照することができます
コード:
主パッケージ のインポート( " FMT " " コンテナ/リング" // 閉じたパッケージが導入され、参照は/ usr / local / GO / SRC / PKG /コンテナ/リング ) FUNCメイン(){ // ループ要素10の作成 Rは: ring.New =(AS 10 ) // 閉ループ要素の割り当てのため のための I:= 1 ; I <= r.Len(); I ++ { r.Value = I R&LT = r.Next() } // ループは、ループを印刷します要素値 r.Do( FUNC(Pのインターフェース{}){ のprintln(P) }) // 得られた要素の現在の要素の後5 R5:r.Move =(。5 ) fmt.Println(R5) fmt.Println(R) // リンク現在の要素rとR 5、RとR5の間に削除に対応する要素 R1 = r.Link(R5) fmt.Println(R1) fmt.Println(R&LT) }