|
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);