Issuu on Google+

Estruturas de Informação Exame Época Normal 13 Julho 2007 Duração 2 horas

Departamento de Engenharia Informática

Resolva cada exercício em Folhas separadas

Com Consulta

1. [ 5 valores] Baseando-se na classe Queue<T> e recorrendo apenas aos métodos desta classe: a) Defina a classe template random queue RandQueue<T> que retira aleatoriamente elementos da fila. Defina os seguintes métodos: construtores, destrutor, vazia, insere, retira. Assuma que dispõe de uma função int num_aleatorio() que gera um número aleatório entre 1 e o comprimento do objecto random queue. b) Faça a sobrecarga do operador == que verifica se dois objectos random queue são iguais, ou seja, se têm os mesmos elementos, independentemente da sua ordem.

2. [ 3 valores]

Uma permutação é um arranjo de itens de tal modo que se os itens forem as letras ‘A’, ‘B’ e ‘C’, temos 6 permutações possíveis: ABC, BAC, CAB, ACB, BCA, CBA. Em geral para n itens temos n! diferentes permutações possíveis. Um método para encontrar todas as permutações possíveis de uma string é o seguinte:

void permuta (string s, int k) { if (k == s.length()-1) cout << s << endl ; else for (int i = k; i < s.length(); i++) { char temp; temp = s[i] ; s[i] = s[k] ; s[k] = temp ; permuta(s,k+1); } }

Qual a complexidade temporal do método. Justifique. 3. [ 5 valores] a) Adicione à classe template ArvBin<T> um método que verifica se duas árvores binárias são iguais somente quanto à sua estrutura. b) Recorrendo à classe template Iterador_Preordem<T> desenvolva um método externo a ambas as classes que mostre os elementos repetidos de uma árvore binária.


Estruturas de Informação Exame Época Normal 13 Julho 2007 Duração 2 horas

Departamento de Engenharia Informática

Resolva cada exercício em Folhas separadas

Com Consulta

c) Desenhe a árvore binária correspondente às visitas em pre-ordem JGDACPZVMY e em-ordem ADCGPJVZYM. KZYTHMB

ZTYKMBH

4. [ 2 valores] Usando apenas os métodos da classe template Stack<T> desenvolva um método que retira os elementos repetidos de uma stack.

5. [ 5 valores] O mecanismo de “Garbage Collection” baseia-se, de uma forma muito resumida e simplista, em eliminar de memória as variáveis que já não estão a ser referenciadas. Considere que o mapa das variáveis em memória está representado através da classe template Lista de Adjacências representativa de um grafo, em que a cada vértice corresponde uma variável em memória e os ramos indicam dependência entre variáveis. Acrescente à classe os métodos que permitam:

a) Remover do grafo todas as variáveis que não são referenciadas por nenhuma outra (variáveis isoladas). b) Remover do grafo todas as variáveis não alcançáveis a partir de uma lista de variáveis activas, passada como parâmetro.


exame