Escolar Documentos
Profissional Documentos
Cultura Documentos
Recursividade
Fatorial: Escreva uma função recursiva que calcule o fatorial de um número N.
Fibonacci: Implemente uma função recursiva que retorne o N-ésimo termo da sequência de
Fibonacci. Teste a função com valores de N pequenos e grandes e observe a performance.
Torres de Hanói: Escreva uma função recursiva que resolva o problema das Torres de Hanói.
A função deve imprimir os movimentos necessários para mover N discos do pino A para o
pino C, usando o pino B como auxiliar.
Soma de Elementos de uma Lista: Escreva uma função recursiva que calcule a soma de
todos os elementos de uma lista.
Permutações de String: Implemente uma função recursiva que gere todas as permutações
possíveis de uma string e as retorne em uma lista.
Listas
Implementação de Lista: Crie uma classe Lista que implemente as seguintes operações
básicas: inserção, remoção e busca de um elemento. Além disso, adicione um método para
imprimir todos os elementos da lista.
Reversão de Lista: Escreva uma função que receba uma lista e reverta a ordem de seus
elementos, sem criar uma nova lista.
Intercalar Listas: Escreva uma função que receba duas listas e as intercale em uma única
lista. Não utilize métodos prontos da linguagem e faça a intercalação elemento a elemento.
Remoção de Duplicatas: Implemente uma função que remova todos os elementos duplicados
de uma lista.
Pilhas
Validação de Símbolos: Implemente uma função que use uma pilha para verificar se uma
expressão contém parênteses, colchetes e chaves abertos e fechados corretamente. Exemplo
de entrada: {[()]}, saída esperada: True; entrada: {[(])}, saída esperada: False.
Conversão de Decimal para Binário: Utilize uma pilha para converter um número inteiro
decimal para binário. Apresente o resultado como uma string.
Mínimo na Pilha: Modifique a estrutura de Pilha para que ela suporte uma operação
adicional min(), que retorna o menor elemento presente na pilha em tempo constante.
Filas
Simulação de Fila de Banco: Implemente uma classe FilaDeBanco que simule a chegada e o
atendimento de clientes. Utilize métodos para inserir clientes na fila, atender clientes e
mostrar o estado atual da fila.
Rodízio de Pessoas: Dada uma fila inicial de pessoas, crie uma função que simule um
número n de operações de "passar a pessoa da frente para o final da fila". Ao final, mostre a
nova configuração da fila.
Reverso de Fila: Utilizando apenas operações de fila (enfileirar e desenfileirar), escreva uma
função que inverta a ordem dos elementos de uma fila.
PROBLEMAS FORMULADOS
Contexto:
Em uma pequena empresa, há apenas uma impressora disponível para todas as tarefas de
impressão. Devido à alta demanda, foi decidido implementar um sistema de gerenciamento
para organizar as tarefas de impressão de acordo com a urgência e a ordem de chegada. O
sistema deve atender aos seguintes requisitos:
Desafio:
Desenvolva um sistema em que utilize tanto a estrutura de dados Pilha quanto Fila para
gerenciar as tarefas de impressão, conforme os requisitos acima. Considere utilizar a Fila para
organizar as tarefas por ordem de chegada e a Pilha para talvez auxiliar no processo de
cancelamento de uma tarefa específica, demonstrando compreensão sobre como e quando
usar cada uma dessas estruturas.
Desafio:
Desenvolva um programa em que utilize tanto a estrutura de dados Fila quanto Pilha para
criar um sistema de gerenciamento de solicitações de atendimento ao cliente. Este sistema
deve atender aos seguintes requisitos:
● Adicionar Solicitação:
Cada nova solicitação possui um identificador único e um nível de urgência (normal
ou urgente). As solicitações normais entram na fila de atendimento padrão, enquanto
as solicitações urgentes são colocadas em uma fila de prioridade.
● Atender Solicitação:
O sistema deve atender primeiro às solicitações urgentes. Dentro de cada categoria
(urgente ou normal), as solicitações devem ser atendidas seguindo a ordem de
chegada.
● Cancelar Solicitação:
O sistema precisa permitir o cancelamento de uma solicitação, dado seu identificador.
Isso pode exigir a remoção de uma solicitação que não seja a próxima na fila de
atendimento.
ORIENTAÇÕES ADICIONAIS
Estes exercícios foram pensados para fornecer uma boa base prática e teórica em estruturas
de dados fundamentais, incentivando o pensamento crítico e a resolução de problemas.