Golang はキューを実装します

WBOY
リリース: 2023-05-16 17:01:08
オリジナル
1564 人が閲覧しました

キューは、コンピューター プログラムのさまざまな問題を解決するためによく使用される先入れ先出し (FIFO) データ構造です。 Go 言語では、標準ライブラリのコンテナ パッケージを使用してキュー データ構造を実装できます。

キューの作成

キューを作成するには、コンテナ パッケージのリスト ライブラリを使用してリストを作成し、それに要素を追加する必要があります。上のコードでは、最初にコンテナ/リスト パッケージをインポートし、次に list.New() 関数を使用して新しいリストを作成しました。次に、q.PushBack() メソッドを使用して 3 つの要素がキューに追加され、for ループを使用してリストを反復処理し、要素を出力しました。

キュー操作

キューは要素の追加に加えて、他の操作も実行できます。キュー操作の一般的な例をいくつか示します。

package main

import (
    "container/list"
    "fmt"
)

func main() {
    // 创建一个新的列表
    q := list.New()

    // 向列表中添加元素
    q.PushBack("one")
    q.PushBack("two")
    q.PushBack("three")

    // 遍历列表并打印元素
    for e := q.Front(); e != nil; e = e.Next() {
        fmt.Println(e.Value)
    }
}
ログイン後にコピー

上の例では、3 つの要素を追加し、for ループを使用してリストを反復処理し、要素を出力しました。次に、 q.Remove(q.Front()) を使用して前面の要素を削除し、 q.PushFront("zero") を使用して前面に新しい要素を追加します。最後に、for ループを再度使用してリストを反復処理し、要素を出力しました。

キュー構造の実装

キューを構造にカプセル化する場合は、次のコードを使用してキュー構造を作成できます。コードでは、Queue 構造を作成し、Enqueue、Dequeue、Len、IsEmpty の 4 つのメソッドを定義しました。 Enqueue はキューの最後に要素を挿入し、Dequeue はキューの先頭から要素を削除します。Len はキューの長さを返し、IsEmpty はキューが空かどうかを判断します。

Queue 構造の使用

以下は Queue 構造を使用するためのサンプル コードです:

package main

import (
    "container/list"
    "fmt"
)

func main() {
    // 创建一个新的列表
    q := list.New()

    // 向列表中添加元素
    q.PushBack("one")
    q.PushBack("two")
    q.PushBack("three")

    // 遍历列表并打印元素
    for e := q.Front(); e != nil; e = e.Next() {
        fmt.Println(e.Value)
    }

    // 弹出最前面的元素
    q.Remove(q.Front())

    // 在最前面添加一个元素
    q.PushFront("zero")

    // 遍历列表并打印元素
    for e := q.Front(); e != nil; e = e.Next() {
        fmt.Println(e.Value)
    }
}
ログイン後にコピー

上記のコードでは、まず新しい Queue オブジェクト q を作成します。 Enqueue メソッドを使用して、3 つの要素をキューに追加します。次に、Len メソッドと IsEmpty メソッドを使用してキューの長さと空かどうかを確認し、Dequeue メソッドを使用して最初の 2 つの要素をそれぞれ削除します。次に、Len メソッドと IsEmpty メソッドを再度使用してキューの長さと空かどうかを確認し、新しい要素 "four" をキューに追加します。最後に、再度 Dequeue メソッドを使用して最初の 2 つの要素を削除し、Len と IsEmpty を使用してキューが空かどうかを確認します。

キュー構造を利用すると、キュー データ構造を明確かつ簡潔に実装できることがわかります。

以上がGolang はキューを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!