MC102:
Algoritmos e Programação de Computadores - Turmas K e L
Zanoni Dias
(PED)
Segunda
Avaliação de Laboratório
Lista Ligada
O
objetivo deste laboratório é a implementação de um programa para manipulação de
conjuntos de inteiros, através de listas
ligadas ordenadas. Você deve usar a seguinte declaração para o tipo básico dos conjuntos:
type Ponteiro
= ^Elemento;
Elemento = record
info: Integer;
proximo: Ponteiro;
end;
Você
deve usar o esboço disponível na página do curso em:
www.ic.unicamp.br/~zanoni/mc102/Documentos/Avaliacao-02.pas
e
implementar as seguintes rotinas (e eventualmente outras auxiliares que você
julgue necessário):
Insere o inteiro 'x' no conjunto dado, de tal forma
que o conjunto permaneça ordenado.
Remove, caso exista, o elemento 'x' do conjunto.
Imprime todos os elementos do conjunto, em ordem
crescente, um por linha.
Remove todos os elementos do conjunto.
Retorna um novo conjunto que
representa a união dos conjuntos 'a' e 'b'.
Retorna um novo conjunto que representa a
interseção dos conjuntos 'a' e 'b'.
Devolve a cardinalidade do conjunto, ou seja, o
número de elementos.
Devolve o k-ésimo elemento do conjunto.
Entrega
O programa é estritamente individual e deverá ser
entregue até no máximo domingo, dia 14 de janeiro de 2001, através da Web Page
do curso (www.ic.unicamp.br/~zanoni/mc102).
Não haverá nenhum tipo de prorrogação.
Observações
Você não deve usar nenhuma estrutura de dados de alocação
estática (arrays ou matrizes, por exemplo). Os conjuntos devem ser mantidos
ordenados (ordem crescente). Faz parte da avaliação entender e comentar
o programa principal do esboço, bem como criar entradas de teste apropriadas.
Não altere o programa principal (a menos de
comentários). Não altere também as definições das rotinas, nem crie novas
variáveis globais.
Implemente pelo menos metade das rotinas de forma
recursiva.
Será descontada nota de quem não seguir esta exigência, assim como o aluno que implementar
mais do que 4 rotinas recursivas receberá um bônus proporcional o número de
rotinas implementadas.
É possível implementar todas as rotinas de forma
recursiva, sendo que as rotinas mais simples (marcadas com asterisco) podem ser
implementadas sem o uso de nenhuma variável auxiliar, e as demais
precisam de uma única variável do tipo Ponteiro.
Maiores detalhes sobre o
enunciado desta avaliação serão discutidos em sala de aula e no laboratório.
Não serão discutido aspectos de implementação. Qualquer tentativa de fraude
será punida de acordo com o documento “Descrição do Curso” disponível na página
do curso.
Boa sorte.