ホームページ >バックエンド開発 >Golang >golangはキューを繰り返しません

golangはキューを繰り返しません

WBOY
WBOYオリジナル
2023-05-15 11:37:36578ブラウズ

開発プロセスにおいて、キューは非常に実用的なデータ構造です。キューを使用する場合、繰り返しなしのキューを実装する方法など、いくつかの問題が発生する可能性があります。

多くのシナリオでは、要素をキューに追加する必要がありますが、要素がすでにキューに存在する場合は、重複した要素の追加を避けるためにそれを無視する必要があります。現時点では、重複しないキューを使用する必要があります。

Golang では、マップを使用して非重複キューを実装できます。具体的には、要素をキーとしてマップに配置し、値を true またはその他の値に設定できます。キーがマップ内にすでに存在する場合は、無視できます。それ以外の場合は、要素をキューに追加できます。

以下は、map を使用して非重複キューを実装するサンプル コードです:

type uniqueQueue struct {
    items map[string]bool
    queue []string
}

func newUniqueQueue() *uniqueQueue {
    return &uniqueQueue{
        items: make(map[string]bool),
        queue: []string{},
    }
}

func (q *uniqueQueue) enqueue(item string) {
    if !q.items[item] {
        q.items[item] = true
        q.queue = append(q.queue, item)
    }
}

func (q *uniqueQueue) dequeue() string {
    item := q.queue[0]
    q.queue = q.queue[1:]
    delete(q.items, item)
    return item
}

func (q *uniqueQueue) isEmpty() bool {
    return len(q.queue) == 0
}

上記のコードでは、uniqueQueue という型を定義します。 items のマップと queue の配列。 items はキューにすでに存在する要素を保存するために使用され、queue はキュー内の要素の順序を保存するために使用されます。

キューに要素を追加する機能を enqueue メソッドに実装します。要素を追加するときは、まずその要素が items に存在するかどうかを確認する必要があります。存在しない場合は、要素を queue に追加し、items 内の要素の対応する値を true に設定します。それ以外の場合は、要素を無視する必要があります。

dequeue メソッドでは、キューから要素を削除する関数を実装します。具体的には、キューから最初の要素を削除し、items から要素を削除します。最後に、削除された要素を返します。

isEmpty メソッドでは、キューが空かどうかを判断します。このメソッドは、キューに要素がない場合に true を返します。

上記のコードを使用すると、重複しないキューを簡単に実装し、重複要素の出現を回避できるため、コードの効率とパフォーマンスが向上します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。