Maison >développement back-end >Golang >golang ne répète pas la file d'attente

golang ne répète pas la file d'attente

WBOY
WBOYoriginal
2023-05-15 11:37:36580parcourir

Pendant le processus de développement, la file d'attente est une structure de données très pratique. Lors de l'utilisation de files d'attente, vous pouvez rencontrer certains problèmes, tels que la manière d'implémenter une file d'attente sans répétition.

Dans de nombreux scénarios, nous devons ajouter des éléments à la file d'attente, mais si l'élément existe déjà dans la file d'attente, nous devons l'ignorer pour éviter d'ajouter des éléments en double. Pour le moment, nous devons utiliser une file d’attente non dupliquée.

Dans Golang, nous pouvons utiliser map pour implémenter des files d'attente non dupliquées. Plus précisément, nous pouvons placer des éléments dans une carte en tant que clés, et les valeurs peuvent être définies sur true ou sur toute autre valeur. Si la clé existe déjà dans la carte, nous pouvons l'ignorer. Sinon, nous pouvons ajouter l'élément à la file d'attente.

Ce qui suit est un exemple de code qui utilise map pour implémenter une file d'attente non dupliquée :

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
}

Dans le code ci-dessus, nous définissons un type appelé uniqueQueue, qui contient un items code> map et un tableau de <code>file d'attente. items est utilisé pour enregistrer les éléments qui existent déjà dans la file d'attente, et queue est utilisé pour enregistrer l'ordre des éléments dans la file d'attente. uniqueQueue 的类型,它包含了一个 items 的 map 和一个 queue 的数组。items 用来保存队列中已经存在的元素,而 queue 用来保存队列中的元素顺序。

我们在 enqueue 方法中实现了向队列中添加元素的功能。在添加元素的时候,我们首先需要判断该元素是否存在于 items 中。如果不存在,我们可以将元素添加到 queue 中,并将 items 中该元素对应的值设置为 true。否则,我们就需要忽略该元素。

dequeue 方法中,我们实现了从队列中移除元素的功能。具体来说,我们从队列的第一个元素开始移除,并将 items 中该元素删除。最后,我们返回移除的元素。

isEmpty

Nous implémentons la fonction d'ajout d'éléments à la file d'attente dans la méthode enqueue. Lors de l'ajout d'un élément, nous devons d'abord déterminer si l'élément existe dans items. S'il n'existe pas, nous pouvons ajouter l'élément à queue et définir la valeur correspondante de l'élément dans items sur true. Sinon, nous devons ignorer l'élément.

Dans la méthode dequeue, nous implémentons la fonction de suppression d'éléments de la file d'attente. Plus précisément, nous supprimons le premier élément de la file d'attente et supprimons cet élément de items. Enfin, nous renvoyons l'élément supprimé. 🎜🎜Dans la méthode isEmpty, nous déterminons si la file d'attente est vide. Cette méthode renvoie vrai s'il n'y a aucun élément dans la file d'attente. 🎜🎜En utilisant le code ci-dessus, nous pouvons facilement implémenter des files d'attente non dupliquées et éviter l'apparition d'éléments en double, améliorant ainsi l'efficacité et les performances du code. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn