ゴー言語(コンテナ学習)

この記事はから来ている:CSDNのブログ

おかげで著者:ACHelloWorld

オリジナルを参照してください:ゴー言語(コンテナの説明)

コンテナ:容器| 容器

ヒープ、リストや指輪:としては、3つの部分を含んで見ることができます。以下が導入されました

1.ヒープ

   ヒープは、ヒープであり、ソース、共通のデータ構造であり、インタフェースは実用に実装する必要が提供されます。

   以下は、ヒープの使用上の例です。

   コード:

主パッケージ

のインポート(
    FMT 
    コンテナ/ヒープ    

// ヒープがメソッドを実装するためのインタフェース必要提供 
タイプヒープ[] INT 

// トップスタックの構成は、それが唯一のシンボル下記必要大きなパイルトップ変化、小さい 
FUNCを(H *ヒープ)以下(I、J INTBOOL {
     リターン(* 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)
}

 

おすすめ

転載: www.cnblogs.com/-wenli/p/12500002.html