Vous êtes sur la page 1sur 3

UNIVERSIDADE FEDERAL DE UBERLNDIA Curso de Bacharelado em Cincia da Computao Trabalho de Algoritmos e Estrutura de Dados 1 Valor 10 Pontos Prof.

. Luiz Gustavo Almeida Martins Entrega: 18/10/2011 (com apresentao para o professor/monitor). Os cdigos devero ser implementados somente em Linguagem C, sendo necessria a utilizao das estruturas de dados conforme discutidas em sala. Os arquivos (fonte e executvel) devem ser entregues em mdia eletrnica (ex: CD), devidamente organizados em pastas.

1) Especificar e Implementar o TAD lista ordenada usando alocao dinmica/encadeada SEM cabealho. Operaes que o TAD deve contemplar: - Inicializar lista (vista em sala) - Verificar lista vazia (vista em sala) - Inserir elemento (vista em sala) - Remover elemento (vista em sala) - Remover na posio: remove o elemento de uma posio especfica, caso ela exista na lista. Se a posio no existir, a operao falha. - Tamanho: retorna o nmero de elementos da lista - Mdia: retorna a mdia aritmtica simples dos elementos da lista - Iguais: recebe duas listas ordenadas e verifica se elas so iguais - Intercalar: recebe duas listas ordenadas (L1 e L2) e retorna uma nova lista (L3) com os elementos das duas listas intercalados conforme a ordenao. 2) Implementar o TAD lista ordenada usando alocao dinmica/encadeada COM cabealho. Operaes que o TAD deve contemplar: as mesmas definidas no item 1. 3) Implementar o TAD lista no ordenada usando alocao dinmica com encadeamento CCLICO. Operaes que o TAD deve contemplar: - Inicializar lista (vista em sala) - Verificar lista vazia (vista em sala) - Inserir no final (vista em sala) - Remover no incio (vista em sala) - Inserir elemento: inserir o elemento no incio - Remover elemento: remover o elemento na posio que ele estiver - Tamanho: retorna o nmero de elementos da lista - Maior: retorna o maior elemento da lista. - Concatena: recebe duas listas no ordenadas L1 e L2 e retorna uma nova lista L3 com os elementos de L1 seguidos dos elementos de L2. 4) Implementar o TAD lista ordenada usando alocao dinmica com encadeamento duplo. Operaes que o TAD deve contemplar: - Inicializar lista - Verificar lista vazia - Inserir elemento

Remover elemento Remover todos: remove todas as ocorrncias de um elemento em uma lista. Tamanho: retorna o nmero de elementos da lista Iguais: recebe duas listas ordenadas e verifica se elas so iguais

5) Especificar e implementar o TAD lista no ordenada usando alocao esttica/seqencial. Operaes que o TAD deve contemplar: - Inicializar lista (vista em sala) - Verificar lista vazia (vista em sala) - Inserir elemento (vista em sala) - Remover elemento (vista em sala) - Remover todos: remove todas as ocorrncias de um elemento em uma lista - Maior: retorna o maior elemento da lista - Tamanho: retorna o nmero de elementos da lista - Intercalar: recebe duas listas ordenadas (L1 e L2) e retorna uma nova lista (L3) com os elementos das duas listas intercalados conforme a ordenao. 6) Implementar o TAD lista ordenada usando alocao esttica/seqencial. Operaes que o TAD deve contemplar: as mesmas definidas no item anterior. 7) Implementar o problema de Josephus utilizando o TAD lista. Problema: um grupo de soldados est cercado pelo inimigo e existe apenas um cavalo para a fuga. Decidiu-se que o soldado que se salvar ser definido na sorte, independente da patente. O processo de escolha seria por eliminao, sendo que o ltimo soldado a ser selecionado se salvaria. O processo de eliminao consiste em: organizar os soldados em um volta da fogueira; escolher um soldado para iniciar a contagem e sortear um nico nmero. Ao final da contagem, o soldado escolhido seria eliminado e o processo seria reiniciado a partir do prximo soldado, at s restar o soldado ganhador. Entradas: - Nomes dos soldados que esto cercados - Opo de incio de contagem: (1) Iniciar contagem a partir do primeiro soldado da lista. (2) Iniciar contagem a partir de um soldado sorteado aleatoriamente da lista. (3) Informar o nome do soldado para iniciar a contagem. Sadas: - No caso da opo de contagem (2), imprimir o nome do soldado sorteado. - Imprimir o nmero sorteado. - Imprimir os nomes dos soldados eliminados, na ordem de eliminao. - Imprimir o nome do Sobrevivente. OBS: cabe ao aluno escolher a MELHOR tcnica de implementao para o problema. 8) Implementar um programa para manipulao de polinmios do tipo P(x) = anxn + an-1xn-1 + ... + a1x1 + a0 Para tal, o polinmio deve ser armazenado atravs de uma lista ordenada, sendo que cada elemento i da lista deve armazenar o k-simo termo do polinmio (diferente de 0), e deve conter o valor k da potncia de x (inteiro) e o coeficiente ak correspondente

(inteiro). Por exemplo, o polinmio P(x) = 3x6 -2x4 + x3 + 5x + 2 deve ser representado pela lista:
P 0 2 1 5 3 1 4 -2 6 3
NULL

Fica a critrio do aluno a escolha da tcnica de implementao, tanto em relao forma de alocao, quanto forma de agrupamento. A utilizao de cabealho, encadeamento cclico/simples/duplo tambm fica a critrio do aluno. Deve ser criada uma interface que permita ao usurio executar qualquer uma das operaes a seguir, a qualquer momento: - Inicializar um polinmio. Fazer P(x)= 0x0. - Inserir um novo termo akxk no polinmio existente. Se j existe um termo akxk no polinmio o valor do coeficiente do novo termo ak deve ser adicionado ao j existente ak, assim: P(x) = anxn + ...(ak + ak)xk ...+ a1x1+ a0 - Imprimir P(x). Se o polinmio for P(x) = 2x5 -3x2 + 7, a representao interna ser:
P 0 7 2 -3 5 2
NULL

A seguinte expresso dever ser visualizada na tela: +7 -3x^2 +2x^5 - Eliminar o termo associado k-sima potncia. Se o polinmio atual for for P(x) = 2x5 -3x2 + 7 (representao interna no exemplo acima) e o usurio solicitar a remoo do termo associado potncia 2 de x, o polinmio resultante ser P(x) = 2x5 + 7 e o n referente potncia 2 de x deve ser liberado resultando na estrutura:
P 0 7 5 2
NULL

Reinicializar um polinmio. Fazer P(x)= 0x0 e liberar os ns do P(x) anterior. Calcular o valor de P(x) para um valor de x solicitado. Por exemplo, se o polinmio atual for P(x) = 3x6 -2x4 + x3 + 5x + 2 e o usurio solicitar o clculo de P(x) para x = 2, o valor de P(2) deve ser calculado: P(2) = 3(2)6 2(2)4 + (2)3 + 5(2) + 2= 364 - 216 + 18 + 52 + 2 = 180 e o valor 180 deve ser apresentado na tela.

Vous aimerez peut-être aussi