Solicite seu Voucher

Entre na fila e aguarde aprovação do administrador

Nova Solicitação

0 na fila

Visualização da Fila (FIFO)

O(1) enqueue/dequeue
FRONT ➜
Fila vazia
➜ REAR
Total Processados 0
Aprovados 0
Rejeitados 0

Painel Administrativo

Gerencie solicitações de vouchers

Próxima Solicitação

FIFO First In, First Out

Nenhuma solicitação pendente

Histórico de Processamento

Nenhuma solicitação processada ainda

Análise de Complexidade

Algoritmos e estruturas de dados implementados

📊 Estrutura de Dados: Fila (Queue)

class Queue {
    constructor() {
        this.items = [];
    }
    
    // Adiciona elemento ao final - O(1)
    enqueue(element) {
        this.items.push(element);
    }
    
    // Remove elemento do início - O(n)*
    dequeue() {
        return this.items.shift();
    }
    
    // Retorna primeiro elemento - O(1)
    peek() {
        return this.items[0];
    }
}

* shift() é O(n) no JavaScript. Para O(1) real, usar lista encadeada.

⏱️ Análise de Complexidade

Operação Melhor Caso Caso Médio Pior Caso
enqueue() Θ(1) Θ(1) O(1)
dequeue() Ω(n) Θ(n) O(n)
peek() Ω(1) Θ(1) O(1)
isEmpty() Ω(1) Θ(1) O(1)

🔄 Princípio FIFO

First In, First Out - O primeiro elemento a entrar é o primeiro a sair.

1
Enqueue: Adiciona ao final da fila
A
B
C
2
Dequeue: Remove do início da fila
A
B
C

💡 Casos de Uso

  • 🎫
    Sistemas de Vouchers

    Processamento justo de solicitações por ordem de chegada

  • 🖨️
    Filas de Impressão

    Gerenciamento de documentos enviados para impressora

  • 📞
    Call Centers

    Atendimento de chamadas na ordem de chegada

  • 🔄
    Processamento Assíncrono

    Fila de tarefas em background jobs

💾 Complexidade de Espaço

Array-based Queue: O(n)

Onde n é o número de elementos na fila

Linked List Queue: O(n)

Cada nó armazena dados + ponteiro

🔧 Detalhes da Implementação

Tecnologias

  • HTML5 + CSS3
  • JavaScript (ES6+)
  • LocalStorage para persistência
  • CSS Animations

Recursos

  • Visualização em tempo real
  • Interface dupla (User/Admin)
  • Histórico de operações
  • Estatísticas de uso

Otimizações

  • Debounce em eventos
  • CSS transitions eficientes
  • Lazy rendering
  • Event delegation