Estruturas de Dados – 2014/2 Aula de Laboratório – 24/11/2014 Profa Patrícia Dockhorn Costa ([email protected]) Busca Binária Considere um tipo que representa os dados de um aluno definido pela estrutura: struct aluno { int mat; /* n´umero de matr´ıcula */ char turma; /* turma do aluno: a, b, c, d, ou e */ char nome[81]; /* nome do aluno */ float p1, p2, p3; /* notas */ }; typedef struct aluno Aluno; 1) Considere um vetor que armazena, em ordem crescente do número de matrícula, ponteiros para estruturas Aluno. Usando a técnica de busca binaria vista no curso, escreva uma função para buscar um aluno no vetor dado um número de matrícula. A função deve receber como parâmetros o número de alunos, o vetor e o número de matrícula a ser buscado. A função deve retornar o índice no vetor onde o elemento está armazenado. Se o número de matrícula não for encontrado no vetor, a função deve retornar -1. A função deve obedecer ao prototipo definido a seguir: int busca (int n, Aluno** v, int mat); 2) Considere um vetor que armazena, em ordem alfabética de nomes, ponteiros para estruturas Aluno. Considere que os nomes armazenados contêm apenas letras minúsculas. Usando a técnica de busca binária vista no curso, escreva uma função para buscar um aluno no vetor dado um nome. A função deve receber como parâmetros o número de alunos, o vetor e o nome a ser buscado. A função deve retornar o índice no vetor onde o elemento está armazenado. Se o número de matrícula não for encontrado no vetor, a função deve retornar -1. A função deve obedecer ao protótipo definido a seguir: int busca (int n, Aluno** v, char* nome); 3) Considere um vetor que armazena, em ordem alfabética de nomes, estruturas Aluno. Considere que os nomes armazenados contêm apenas letras minúsculas. Usando a técnica de busca binária vista no curso, escreva uma função para buscar um aluno no vetor dado um nome. A função deve receber como parâmetros o número de alunos, o vetor e o nome a ser buscado. A função deve retornar o índice no vetor onde o elemento está armazenado. Se o número de matrícula não for encontrado no vetor, a função deve retornar -1. A função deve obedece A função deve obedecer ao protótipo definido a seguir: int busca (int n, Aluno* v, char* nome); Considere uma árvore binária de busca que armazena valores inteiros. Nesta estrutura, pode ocorrer repetições de um mesmo valor. Assim, os valores associados aos nós da subárvore da esquerda são menores que o valor associado à raiz, e os valores associados à subárvore da direita são maiores ou iguais. O tipo que representa o nó da árvore é dados por: struct arv { int info; struct arv* esq; struct arv* dir; }; typedef struct arv Arv; 4) Escreva uma função que retorne o número de ocorrências de um dado valor x na árvore. A função deve tirar proveito da ordenação da árvore e obedecer ao seguinte protótipo: int ocorrencias (Arv* a, int) 5) Escreva uma função que imprima os valores associados às folhas em ordem não crescente (isto é, do maior para o menor, podendo haver repetições). A função deve obedecer ao seguinte protótipo: int imprime_folhas (Arv* a)