Estruturas de Dados e Algoritmos

Propaganda
Estruturas de Dados e Algoritmos
LCI LEBM LMAC
1o mini-teste 19 de Abril de 2004 (duração: 1 hora)
1. Programação e Eficiência (0.75+0.75+0.5 valores)
Desenvolva em C uma versão recursiva e outra imperativa da função todosMultiplosQ que,
dado um vector de inteiros e um natural n (que se supõe nunca ser negativo ou 0), devolve
“1” sse todos os valores nas posições do vector são múltiplos de n (use a operação %). Além
do vector há que acrescentar argumentos convenientes à função (como o comprimento do
vector ou os ı́ndices de inı́cio e fim). Indique a eficiência (melhor e pior casos apenas) da
versão imperativa.
2. Estruturas Dinâmicas de Dados em C (0.5+0.5+1+1
valores)
Considere que uma turma (com alunos) é representada pelo apontador para uma estrutura
com três campos: o número de alunos na turma, o apontador para o primeiro nó de uma
lista ligada e o apontador para o último nó dessa lista. Cada nó da lista ligada é uma
estrutura com dois campos: o apontador para a estrutura que representa um aluno e o
apontador para o nó seguinte. A estrutura que representa um aluno tem dois campos: o
nome e o número (IST).
1. Defina em C os tipos necessários.
2. Defina ainda as funções seguintes:
(a) turmaVazia() que devolve o apontador para a estrutura que representa a turma
vazia.
(b) pesquisaAluno(número, pturma) que devolve “1” sse o aluno com número no
primeiro argumento se encontra na turma representada pelo apontador pturma.
(c) insereEmTurma(nome,número,pturma) que devolve o apontador para a estrutura correspondente a uma nova turma, resultante de acrescentar (no fim da
lista ligada) o nó correspondente ao novo aluno (com nome e número dados no
argumento). Note que pturma é o apontador para a estrutura a turma original.
No caso de a lista já conter um aluno com o mesmo número nada deverá ser
inserido.
Download