Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdbool.h>
- #include <locale.h>
- typedef struct no{
- char nome[30];
- int matricula, turma;
- float coef;
- struct no *prox;
- struct no *ant;
- }noAluno;
- noAluno *prim=NULL;
- noAluno *ult=NULL;
- bool insereAluno (noAluno *insere){
- noAluno *atual = prim;
- noAluno *ant = NULL;
- noAluno *novo = (noAluno*) malloc(sizeof(noAluno));
- novo = insere;
- if (prim == NULL){
- novo->prox = novo;
- novo->ant = novo;
- prim = novo;
- ult = novo;
- }
- else{
- while (strcmp(atual->nome, insere->nome) > 0){
- ant = atual;
- atual = atual->prox;
- if (atual == prim)
- break;
- }
- if (ant == NULL){
- prim = novo;
- ult->prox = prim;
- }
- else
- ant->prox = novo;
- novo->prox = atual;
- novo->ant = ant;
- if (atual == prim)
- ult = novo;
- }
- return true;
- }
- void imprimeLista (){
- system("cls");
- noAluno *atual = prim;
- while (atual != NULL){
- printf("Nome: %sMatrícula: %d\nTurma: %d\nCoeficiente: %.2f\n\n", atual->nome, atual->matricula, atual->turma, atual->coef);
- atual = atual ->prox;
- if(atual == prim)
- break;
- }
- }
- bool removeAluno (int mat){
- noAluno *atual = prim;
- noAluno *ant = NULL;
- if (atual != NULL){
- while ((atual->matricula != mat) && (atual != NULL)){
- ant = atual;
- atual = atual->prox;
- if (atual == prim)
- break;
- }
- if (ant == NULL)
- prim = atual->prox;
- else
- ant->prox = atual->prox;
- free(atual);
- return true;
- }
- else{
- printf("Não existe essa matrícula cadastrada\n");
- return false;
- }
- }
- int main (int argc, char *argv[]){
- setlocale(LC_ALL, "Portuguese");
- int a = 1;
- printf ("Digite os dados do aluno\n");
- while (a != 0){
- noAluno *aux = (noAluno*) malloc (sizeof(noAluno));
- printf ("Nome: ");
- fflush(stdin);
- fgets(aux->nome, 30, stdin);
- printf ("Matricula: ");
- scanf ("%d", &aux->matricula);
- printf ("Turma: ");
- scanf ("%d", &aux->turma);
- printf ("Coeficiente: ");
- scanf ("%f", &aux->coef);
- insereAluno(aux);
- printf("Digite 0 para encerrar a inserção de aluno\n 1 para inserir outro aluno: ");
- scanf ("%d", &a);
- }
- imprimeLista();
- int matri;
- printf("Digite o número de matrícula à ser removido: ");
- scanf("%d", &matri);
- removeAluno(matri);
- imprimeLista();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement