Boa Noite Pessoal!
Estou com dificuldade em implementar um exercício de lista simplesmente encadeada. Nele pede para criar uma estrutura com os dados de um aluno (matricula, nome e media), e outra para ser a lista (com a estrutura com os dados do aluno e um no com as informações do próximo nó). Uma das opções é para inserir os dados de um novo aluno em ordem crescente de matricula. O código 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!='\0'){
Al->nome=nome;
i++;
}
Al->nome=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;
}
Desde já, Obrigada!