Revisão de Código: Estruturas de Dados e Algoritmos

Classificado em Design e Engenharia

Escrito em em português com um tamanho de 1,3 KB

Exercício 1: Função para Inserir Elemento no Início de uma Fila (FuraFila)

Função recebe uma fila e um inteiro c, para ser inserido no início da fila, caso c já exista nela.

void FuraFila(Fila *f, int c){
    Fila *faux = criaFila(); // Cria a fila auxiliar
    celula *caux; // Célula auxiliar
    int k = -1, t = 0;
    
    while(!vazia(f)){
        caux = desenfileira(f); // caux recebe a célula com o último elemento da fila f.
        if(caux->conteudo != c)
            enfileira(faux, caux->conteudo); // Enfileira o elemento na fila faux;
        else{
            k = caux->conteudo;
            t = 1; // Para indicar que o elemento foi encontrado na fila.
        }
    }
    
    if (t == 0) 
        printf("Elemento não encontrado na fila!\n");
    else{
        enfileira(f, k); // O elemento "fura a fila", pois agora é inserido no primeiro lugar da fila f.
    } 
    
    while(!vazia(faux)){
        caux = desenfileira(faux);
        enfileira(f, caux->conteudo); // Volta os elementos para a fila original, porém com o elemento c no início da fila caso ele esteja na fila.
    }
}

Entradas relacionadas: