"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Réapprendre les bases de CS - Implémentation de Queue

Réapprendre les bases de CS - Implémentation de Queue

Publié le 2024-11-09
Parcourir:824

Relearning basics of CS - Implementing Queue

Avez-vous déjà été dans une file d'attente ? La structure des données de la file d'attente fait également la même chose. Vous vous tenez au bout de la file d'attente lorsque vous souhaitez passer une commande, peut-être dans votre restaurant libre-service préféré, puis vous remontez la file d'attente et partez.

La structure de données de file d'attente dans CS exécute la même fonctionnalité. La structure de données de file d'attente est une structure de données premier entré, premier sorti. La structure des données de file d'attente peut être construite avec deux fonctions de base Enqueue et Dequeue qui consistent essentiellement à ajouter à la liste et à supprimer de la liste.

Exemples concrets

Dans le monde réel de l'informatique, les files d'attente constituent l'épine dorsale des composants logiciels suivants

  • Planification des tâches
  • Gestion des événements
  • Communication asynchrone, etc.

Alors qu'un composant simple et facile à visualiser serait

  1. Une file d'attente dans la playlist pour les chansons
  2. Une file d'attente dans l'ordre des données envoyées sur le réseau, etc.

Mise en œuvre

package main

import (
    "fmt"
    "errors"
)

type Queue struct{
    Elements []int
    Size int
}

func (q *Queue) Enqueue(value int){
    if q.GetLength() == q.Size { 
        fmt.Println("Overflow") 
        return
    } 
    q.Elements = append(q.Elements, value) 
}

func (q *Queue) Dequeue() int {
    if q.IsEmpty() { 
        fmt.Println("UnderFlow") 
        return 0
    } 
    element := q.Elements[0] 
    if q.GetLength() == 1 { 
        q.Elements = nil 
        return element 
    } 
    q.Elements = q.Elements[1:] 
    return element
}

func (q *Queue) GetLength() int { 
    return len(q.Elements) 
} 

func (q *Queue) IsEmpty() bool { 
    return len(q.Elements) == 0
} 

func (q *Queue) Peek() (int, error) { 
    if q.IsEmpty() { 
        return 0, errors.New("empty queue") 
    } 
    return q.Elements[0], nil 
} 

Complexité

Complexité temporelle - O(1) pour la mise en file d'attente et la suppression de la file d'attente
Complexité spatiale - O(1) pour Enqueue et Dequeue

Références

Référence - https://www.geeksforgeeks.org/queue-in-go-lingual/

Déclaration de sortie Cet article est reproduit sur : https://dev.to/abinav_athreya_f4b5487056/relearning-basics-of-cs-implementing-queue-54g7?1 En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3