Ir ao conteúdo
  • Cadastre-se

Lista encadeada


Posts recomendados

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",&nota);
 
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,
 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...