Lista simplesmente encadeada com estrutura dentro de estrutura

0 respostas
structprogramação
F

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;
}

Criado 28 de novembro de 2017
Respostas 0
Participantes 1