Faça uma função para intercalar filas: a função recebe as duas filas e retorna a fila com os elementos das duas filas intercalados conforme a ordem com que elas se dispõe na fila.
Passo 1
O enunciado pede para criar uma função que receba duas filas e retorne uma nova fila cujos elementos vêm alternadamente da primeira e da segunda fila, respeitando a ordem interna de cada uma. O conteúdo envolve estrutura de dados (filas) e operações básicas de enfileirar, desenfileirar e teste de fila vazia.
Passo 2
Precisamos usar as operações típicas de fila:
– fila.enfileirar(x): põe o elemento x no fim da fila
– fila.desenfileirar(): retira e devolve o elemento do início da fila
– fila.estaVazia(): verifica se a fila está sem elementos
– fila.enfileirar(x): põe o elemento x no fim da fila
– fila.desenfileirar(): retira e devolve o elemento do início da fila
– fila.estaVazia(): verifica se a fila está sem elementos
Passo 3
Inicializamos uma fila vazia que será usada para armazenar o resultado do intercalamento.
Passo 4
Enquanto pelo menos uma das filas de entrada não estiver vazia, fazemos:
– Se a primeira fila não estiver vazia, desenfileiramos dela e enfileiramos o elemento na fila resultado
– Se a segunda fila não estiver vazia, desenfileiramos dela e enfileiramos na fila resultado
– Se a primeira fila não estiver vazia, desenfileiramos dela e enfileiramos o elemento na fila resultado
– Se a segunda fila não estiver vazia, desenfileiramos dela e enfileiramos na fila resultado
Passo 5
Quando as duas filas de entrada estiverem vazias, retornamos a fila resultado, que já conterá os elementos intercalados.
Resposta
função intercale(fila1, fila2):
filaResultado ← nova Fila()
enquanto (não fila1.estaVazia() ou não fila2.estaVazia()) faça
se não fila1.estaVazia() então
elemento ← fila1.desenfileirar()
filaResultado.enfileirar(elemento)
fim se
se não fila2.estaVazia() então
elemento ← fila2.desenfileirar()
filaResultado.enfileirar(elemento)
fim se
fim enquanto
retorne filaResultado
filaResultado ← nova Fila()
enquanto (não fila1.estaVazia() ou não fila2.estaVazia()) faça
se não fila1.estaVazia() então
elemento ← fila1.desenfileirar()
filaResultado.enfileirar(elemento)
fim se
se não fila2.estaVazia() então
elemento ← fila2.desenfileirar()
filaResultado.enfileirar(elemento)
fim se
fim enquanto
retorne filaResultado