SóProvas


ID
3343804
Banca
CS-UFG
Órgão
UFG
Ano
2019
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A pilha P e a fila F possuem originalmente n elementos cada (n>5), e suas operações são: 


        empilha(P, elemento): inserir elemento na pilha P;

        desempilha(P): remover da pilha P e retornar o elemento removido;

        enfileira(F, elemento): inserir elemento na fila F;

        desenfileira(F), remover da fila F e retornar o elemento removido.     

    Seja o pseudocódigo abaixo:

        para i = 1 até n, faça

            empilha(P, desempilha(P))

            enfileira(F, desenfileira(F))

        fim-para


Ao final da execução do pseudocódigo, os estados finais de P e F são, respectivamente: 

Alternativas
Comentários
  • Não entendi, em uma pilha o último a ser inserido é o primeiro a ser retirado, assim quando o comando desempilha(P) fosse executado n vezes os valores retornados estariam invertidos não?

  • Francisco, se atente a função inteira:

    empilha(P, desempilha(P))

    Primeiro é resolvido a segunda parte;

    empilha(P, desempilha(P) )

    Exemplo: em uma pilha em que temos a seguinte sequencia: P {11,12,13}

    ao desempilhar será retirado o ultimo elemento inserido na pilha p. Esse vai ser retornado e utilizado no método exterior:

    será retirado o elemento 13.

    empilha(P, elemento_que_acabou_de_ser_retirado_pela_funcao_desempilha)

    empilha(P, 13)

    depois, o elemento três será empilhado na pilha P, e com isso, ficará novamente na ultima posição ficando P {11,12,13}. Pois temos que lembrar que nas pilhas a inserção e remoção acontecem na mesma extremidade.