Lista encadeada Simples em c com erro

1. Lista encadeada Simples em c com erro

Guolherme Soares Sousa Silva
Gui2000

(usa Outra)

Enviado em 01/04/2019 - 23:58h

            
typedef struct cadastro {
char nome[30];
char matricula[30];
char Disciplinas[30];
char notas[30];
struct cadastro *proxno;
} alunos;

int inserir_aluno_inicio(alunos **lista);
int inserir_aluno_fim(alunos **lista);
alunos *remover_aluno(alunos **lista);
int menu(void);
void opcoes(alunos **lista, int opc);
alunos *liberar();
alunos *inicializar();
void imprimir(alunos **lista);
void creditos();
int main()
{
int opcao;
alunos *lista = (alunos *)malloc(sizeof(alunos));

lista = inicializar();

do
{
opcao = menu();
opcoes(&lista, opcao);
system("pause");
system("cls");
} while (opcao != 5);

return 0;
}
alunos *inicializar()
{
return NULL;
}

int inserir_aluno_inicio(alunos **lista)
{
alunos *novo = (alunos *)malloc(sizeof(alunos));

if (novo == NULL)
{
puts("Sem memória");
return 1;
}

printf("Digite o nome do aluno ou da aluna: ");
scanf(" %s", novo->nome);

printf("Digite a matricula do aluno ou aluna[5 numeros ou letras]:");
scanf(" %s", novo->matricula);

printf("Digite a disciplina do aluno ou aluna: ");
scanf(" %s", novo->Disciplinas);

printf("Digite a nota da aluna ou do aluno:");
scanf(" %s", novo->notas);

puts("");

novo->proxno = *lista;
*lista = novo;
return 0;
}
int inserir_aluno_fim(alunos **lista)
{
alunos *novo_novo = (alunos *)malloc(sizeof(alunos));
novo_novo->proxno=NULL;
printf("Digite o nome do aluno ou da aluna: ");
scanf(" %s", novo_novo->nome);

printf("Digite a matricula do aluno ou aluna[5 numeros ou letras]:");
scanf(" %s", novo_novo->matricula);

printf("Digite a disciplina do aluno ou aluna: ");
scanf(" %s", novo_novo->Disciplinas);

printf("Digite a nota da aluna ou do aluno:");
scanf(" %s", novo_novo->notas);

puts("");
alunos *aux=*lista;
if(lista==NULL)
{
*lista=novo_novo;
return 0;
}
while(aux->proxno!=NULL)
{
aux=aux->proxno;
}
ant->proxno= *novo_novo;
}
//
int menu()
{
int ale;
puts("===============================================\n");
puts(" M E N U___E S C O L A R___V I N G A D O R E S =\n");
puts(" ===============================================\n");
printf(" |[ 0 ] INSERIR NO INICIO |\n");
puts(" |[ 1 ] INSERIR NO FIM |\n");
puts(" |[ 3 ] IMPRIMIR INFORMACOES DO ALUNO |\n");
puts(" |[ 4 ] CREDITOS |\n");
puts(" |[ 5 ] SAIR DA LISTA |\n");
puts(" =====================================|\n");
scanf("%d", &ale);
return ale;
}

void opcoes(alunos **lista, int opc)
{
switch (opc)
{
case 0:
inserir_aluno_inicio(lista);
break;
case 1:
inserir_aluno_fim(lista);
break;
case 2:
break;
case 3:
imprimir(lista);
break;
case 4:
creditos();
break;
case 5:
puts("Ate a proxima!");
break;
default:
puts("Nao existe essa opcao tente novamente!");
}
}

void imprimir(alunos **lista)
{
alunos *aux = lista;
while (aux->proxno!= NULL)
{
printf("O nome da aluna(o): %s", aux->nome);
printf("\n");
printf("A matricula do aluno(a) e: %s", aux->matricula);
printf("\n");
printf("A disciplina da aluna(o) e: %s",aux->Disciplinas);
printf("\n");
printf("A nota do aluno (a): %s", aux->notas);
printf("\n");
aux = aux->proxno;
}
}
void creditos()
{
puts("CREDITOS:");
puts("");
puts("GUILHERME SOARES SOUSA SILVA");
puts("");
puts("GABRIEL FARIAS");
puts("");
puts("ITALO AURELIO");
}




----------
Quando imprimo, aparecem valores aleatórios, como se fossem endereços. Compreendo que tenho que passar na chamada da função `main` assim:

escolha(&lista,opc)

Com o `&` para ele não perder a referência, mas ainda assim não mostra o que quero, que é inserir no final.



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts