Ficha Nº7
|
Exercício Nº1
|
2008.04.21
|
#define MAXALUNO 100 typedef struct sAluno { char * nome; int idade; int prox; } Aluno; typedef struct sListAluno { int cabeca; /* -- cabeça da lista -- */ int livre; /* -- primeira posição livre -- */ Aluno lista[MAXALUNO]; } ListAluno;
int main() { Aluno a1 = {"Carlos", 17, -1}, a2 = {"Ana", 19, -1}, a3 = {"Zulmira", 18, -1}, a4 = {"Paulo", 18, -1}, a5 = {"David", 19, -1}; ListAluno l1; int i; l1 = initLista(l1); l1 = insereAluno(l1, a1); l1 = insereAluno(l1, a2); l1 = insereAluno(l1, a3); l1 = insereAluno(l1, a4); l1 = insereAluno(l1, a5); listAluno(l1); i = procuraAluno(l1, "Ana"); consultAluno(l1, i); }
(a)A função de inicialização que deverá inicializar uma estrutura do tipo ListAluno:
ListAluno initLista(ListAluno l);
(b)A função de procura que dada uma lista e um nome dá como resultado o índice onde esse aluno se encontra na lista (devolve -1 se o aluno não pertencer à lista):
int procuraAluno(ListAluno l, char* nome);
(c)A função de consulta que dada uma lista e um índice, escreve no monitor a informação relativa ao aluno armazenado nesse índice:
void consultAluno(ListAluno l, int indice);
(d)A função de inserção que recebe uma lista e um aluno e coloca o aluno na lista actualizando o índice (campo próximo) e devolvendo uma nova lista alterada:
ListAluno insereAluno(ListAluno l, Aluno a);
(e)A função de listagem que recebendo uma lista produz uma listagem ordenada alfabeticamente por nome dos alunos presentes na lista:
void listAluno(ListAluno l);
(f)A função de remoção que dada uma lista e um nome remove o respectivo aluno da lista devolvendo a lista alterada:
ListAluno removeAluno(ListAluno l, char *nome);