#include #include #include #include typedef struct aluno{ char nome[110]; int ra; double nota; } aluno; typedef struct no{ aluno itemAluno; struct no *prox; }No; typedef struct Fila { No *frente; No *tras; int tamanho; }Fila; void inicializa(Fila *f) { f->frente = NULL; f->tras = NULL; f->tamanho = 0; } // utilizado para inicializar a fila int qtde (Fila f) { return f.tamanho; } int cheia(Fila f) { return 0; // desnecessarios } void insere(Fila *f, aluno a) { No *aux = malloc(sizeof(No)); aux->itemAluno = a; // atribuicao do aluno aux->prox = NULL; if(f->frente == NULL) //fila estava vazia f->frente = aux; else f->tras->prox = aux; f->tras = aux; f->tamanho ++; } aluno remover(Fila *f) { No *aux = f->frente; aluno a = aux->itemAluno; f->frente = aux->prox; free(aux); f->tamanho--; if (f->frente == NULL) f->tras == NULL; return a; } int filaVazia(Fila f) { return (f.frente==NULL); } void destroi(Fila *f) { while (!filaVazia(*f)) remove(f); } int menuOpt(); int main() { Fila f; aluno auxAluno; inicializa(&f); int op = -1; while (op != 0) { op = menuOpt(); system("cls"); // limpar tela switch (op){ case 1: printf("Insercao\n\n"); fflush(stdin); // limpar buffer printf("Digite o nome\n\n"); gets(auxAluno.nome); printf("Digite o RA\n\n"); scanf("%d", &auxAluno.ra); printf("Digite a media\n\n"); scanf("%lf", &auxAluno.nota); insere(&f,auxAluno); break; case 2: printf("Remover ...\n"); if (filaVazia(f)) printf("Fila vazia! "); else { auxAluno = remover(&f); printf("O aluno %s foi removido ...", auxAluno.nome); } break; case 0: printf("Saindooo ... "); return 0; break; default: printf("opcao invalida\n"); } } system("pause"); return 0; } int menuOpt() { int opt; printf("Selecione: \n"); printf("1 - Inserir\n"); printf("2 - Remover\n"); //printf("3 - Escrever todos\n"); printf("0 - Sair\n"); scanf("%d", &opt); return opt; }