Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct aluno {
- int mat;
- char nome[21];
- float nota;
- char sexo;
- struct aluno* prox;
- };
- typedef struct aluno Aluno;
- Aluno* lst_cria(void) {
- Aluno* p;// = (Aluno*)malloc(sizeof(Aluno));
- p = NULL;
- return p;
- }
- Aluno* lst_insere(Aluno * lst, int mat, char* nome, float nota, char g) {
- Aluno* novo = (Aluno*)malloc(sizeof(Aluno));
- if (novo != NULL) {
- novo->mat = mat;
- strcpy(novo->nome,nome);
- novo->nota = nota;
- novo->sexo = g;
- novo->prox = lst;
- }
- return novo;
- }
- void exibe_lista(Aluno* lst) {
- Aluno* p;
- for (p=lst; p != NULL; p=p->prox) {
- printf("Matricula: %d\tNome: %s\tNota: %.1f\tSexo: %c\n", p->mat, p->nome, p->nota, p->sexo);
- }
- }
- int conta_elementos_recursiva(Aluno *head) {
- if (head == NULL) {
- return 0;
- }
- return 1 + conta_elementos_recursiva(head->prox);
- }
- int conta_sexo_recursiva(Aluno* lst, char g) {
- if (lst == NULL) {
- return 0;
- }
- if (lst->sexo == g) {
- return 1 + conta_sexo_recursiva(lst->prox, g);
- }
- return conta_sexo_recursiva(lst->prox, g);
- }
- void lst_libera(Aluno* lst) {
- Aluno* p = lst, * t;
- while (p != NULL) {
- t = p->prox; // guarda referencia p prox aluno
- free(p); // libera a memoria apontada por p
- p = t; // faz apontar para o proximo
- }
- }
- int main(void) {
- Aluno* lst;
- lst = lst_cria();
- lst = lst_insere(lst, 33, "Caio", 3.3, 'M');
- lst = lst_insere(lst, 11 , "Ana", 1.1,'F');
- lst = lst_insere(lst, 44, "Edu", 4.4, 'M');
- lst = lst_insere(lst, 66, "Luiz", 6.6, 'M');
- lst = lst_insere(lst, 22, "Bia", 2.2, 'F');
- lst = lst_insere(lst, 55, "Jane", 5.5, 'F');
- /* inserri aqui a chamada para as suas funções e testes */
- printf("Existem %d elementos na lista\n", conta_elementos_recursiva(lst) );
- printf("Tem %d mulheres na lista.\n", conta_sexo_recursiva(lst,'F') );
- printf("Tem %d homens na lista.\n", conta_sexo_recursiva(lst, 'M'));
- exibe_lista(lst);
- lst_libera(lst);
- return 0;
- }
Add Comment
Please, Sign In to add comment