"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Reaprendendo noções básicas de CS - Implementando Queue

Reaprendendo noções básicas de CS - Implementando Queue

Publicado em 2024-11-09
Navegar:140

Relearning basics of CS - Implementing Queue

Você já esteve em uma fila? A estrutura de dados da fila também faz a mesma coisa. Você fica no final da fila quando quer fazer um pedido, talvez no seu restaurante self-service favorito, e então sobe na fila e sai.

A estrutura de dados Queue no CS executa a mesma funcionalidade. A estrutura de dados da fila é uma estrutura de dados First In First Out. A estrutura Queue Data pode ser construída com duas funções básicas, Enqueue e Dequeue, que basicamente consistem em adicionar e remover da lista.

Exemplos da vida real

No mundo real da ciência da computação, as filas formam a espinha dorsal dos seguintes componentes de software

  • Agendamento de tarefas
  • Manipulação de eventos
  • Comunicação assíncrona etc

Embora um componente simples e fácil de visualizar seria

  1. Uma fila na playlist para as músicas
  2. Uma fila na ordem em que os dados são enviados pela rede, etc

Implementação

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 
} 

Complexidade

Complexidade de tempo - O(1) para enfileiramento e desenfileiramento
Complexidade do espaço - O(1) para Enfileirar e Desenfileirar

Referências

Referência - https://www.geeksforgeeks.org/queue-in-go-language/

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/abinav_athreya_f4b5487056/relearning-basics-of-cs-implementing-queue-54g7?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3