Boa Noite Pessoal!
Estou com dificuldade em implementar um exercício que pede para criar duas estruturas, uma com os dados de um aluno, e outra para ser a lista. Na inserção de dados pede para fazer em ordem crescente de matriculas. Ele está dando erro. Vocês conseguem me dizer onde estou errando? Vejam meu código:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct aluno{
int matricula;
char nome[100];
float media;
};
typedef struct aluno Aluno;
struct no{
Aluno* dados;
struct no* prox;
};
typedef struct no No;
No* cria(No* l){
No* p=(No*)malloc(sizeof(No));
p->dados=NULL;
return l;
}
No* ins_ordenado(No* l,int mat,char* nome,float nota){
Aluno* Al=(Aluno*)malloc(sizeof(Aluno));
No* novo=(No*)malloc(sizeof(No));
int i=0;
Al->matricula=mat;
while(nome[i]!=’\0’){
Al->nome[i]=nome[i];
i++;
}
Al->nome[i]=NULL;
Al->media=nota;
novo->dados=Al;
No*p=l;
No*aux=NULL;
if(l==NULL){
novo->prox=l;
return novo;
}
while(p!=NULL&&((p->dados->matricula)<(Al->matricula))){
aux=p;
p=p->prox;
}
novo->prox=aux->prox;
aux->prox=novo;
if(p==NULL){
novo->prox=NULL;
}
return l;
}
void imprime(No* l){
No* p;
printf(“turma 1:\n”);
for(p=l;p!=NULL;p->prox){
printf(“Matricula: %d\t Nome: %s Nota:%f\n”,p->dados->matricula,p->dados->nome,p->dados->media);
}
printf("\n");
}
int vazia(No* l){
return(l==NULL);
}
int main(){
No* l1=cria(l1);
l1=ins_ordenado(l1,1,“Maria”,5);
printf(“vazia? %d”,vazia(l1));
//imprime(l1);
return 0;
}