Pessoal, bom dia!
estou tentando fazer um exercício em C, onde devo inserir os dados em uma lista encadeada de forma ordenada.
struct lista{
int mat;
char nome[80];
float nota;
struct lista* prox;
};
typedef struct lista Lista;
//função insere ordenado
Lista *ins_ordenado(Lista *l, int mat, char *nome, float nota){
Lista*p=l;
Lista*q=l;
Lista*novo;
novo=(Lista*)malloc(sizeof(Lista));
novo->mat=mat;
strcpy(novo->nome, nome);
novo->nota=nota;
if (mat<p->mat){
novo->prox=p;
p=novo;
return p;
}
while(q!=NULL){
p=p->prox;
if (mat < p->mat){
novo->prox=p;
q->prox=novo;
return l;
}
if (p->prox==NULL){
p->prox=novo;
novo->prox=NULL;
return l;
}
}
}
int main(){
Lista *l;
int mat;
char nome[80];
float nota;
printf("Informe matricula do aluno:\n");
scanf("%d",&mat);
printf("Informe nome do aluno:\n");
scanf("%s",nome);
printf("Informe nota do aluno:\n");
scanf("%f",¬a);
printf("matricula:%d \n Aluno:%s \n nota:%f",mat,nome,nota);
ins_ordenado(l,mat,&nome,nota);
imprime(l);
}
Quando eu rodo ele está dando erro, logo apos imprimir os dados que coletei do usuário.
Alguém sabe me dizer o que está errado no meu código?
Grato,