Ir ao conteúdo
  • Cadastre-se
Raoni Moreira

Lista encadeada

Recommended Posts

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,
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×