C-我不明白为什么会返回此错误

时间:2018-10-24 18:39:26

标签: c struct compiler-errors

我收到了以下代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct Est{
    int id;
    struct Est *nant;
    struct Est *nseg;
}Estrelas;

typedef struct ObsEst{
    Estrelas *E;
    struct ObsEst *nant;
    struct ObsEst *nseg;
}ObservadoresEstrelas;

typedef struct Obs{
    int id;
    ObservadoresEstrelas *OE;
    struct Obs *nseg;
    struct Obs *nant;
}Observadores;


Observadores* criaNoObservador();
Estrelas* criaNoEstrela();
Observadores *insertLastO(Observadores *L,Observadores *nv);
Estrelas *insertLastE(Estrelas *L,Estrelas *nv);


void mostralistaO(Observadores *L);
void mostralistaOE(ObservadoresEstrelas *L);
void mostralistaE(Estrelas *L);
int main(int argc, const char * argv[]) {
    int viEstrelas[5]={1,2,3,4,5};
    int viObservadores[6]={12,23,34,41,53,74};

    int i;
    Observadores * Eles=NULL,*ListaO=NULL;
    Estrelas * Elas =NULL,*ListaE=NULL;
    for (i=0; i<6; i++) {
        Eles=criaNoObservador();
        Eles->id=viObservadores[i];
        ListaO=insertLastO(ListaO, Eles);
    }
    for (i=0; i<5; i++) {
        Elas=criaNoEstrela();
        Elas->id=viEstrelas[i];
        ListaE=insertLastE(ListaE, Elas);
    }

    mostralistaO(ListaO);
    mostralistaE(ListaE);
    return 0;
}
Observadores * criaNoObservador(){
    Observadores *nv= (Observadores *)malloc(sizeof(Observadores *));
    nv->id =0;
    nv->OE=NULL;//ponteiro para no ObservadorEstrela
    nv->nant=NULL;
    nv->nseg=NULL;
    return nv;
}
Estrelas * criaNoEstrela(){
    Estrelas *nv= (Estrelas *)malloc(sizeof(Estrelas *));
    nv->id =0;
    nv->nant=NULL;
    nv->nseg=NULL;
    return nv;
}


Observadores * insertLastO(Observadores *L,Observadores *nv){
    Observadores * aux =L;
    if (L==NULL) {
        return nv;
    }
    while (L->nseg!=NULL) {
        L=L->nseg;
    }
    L->nseg=nv;
    nv->nant=L;
    return aux;
}
Estrelas *insertLastE(Estrelas *L,Estrelas *nv){
    Estrelas * aux =L;
    if (L==NULL) {
        return nv;
    }
    while (L->nseg!=NULL) {
        L=L->nseg;
    }
    L->nseg=nv;
    nv->nant=L;
    return aux;
}



void mostralistaO(Observadores *L){
    if (L==NULL) {
        printf("Nao tenho elementos!\n");
    }
    while (L!=NULL) {
        if (L->nseg==NULL) {
            printf("%d -> NULL \n",L->id);
            break;
        }
        printf("%d -> ",L->id);
        L=L->nseg;
    }
}
void mostralistaE(Estrelas *L){
    if (L==NULL) {
        printf("Nao tenho elementos!\n");
    }
    while (L!=NULL) {
        if (L->nseg==NULL) {
            printf("%d -> NULL \n",L->id);
            break;
        }
        printf("%d -> ",L->id);
        L=L->nseg;
    }
}

我尝试在https://repl.it上编译代码,但返回以下代码:

  

main:malloc.c:2406:sysmalloc:断言`(old_top == initial_top(av)&& old_size == 0)|| (((无符号长)(old_size)> =最小大小&& prev_inuse(old_top)&&((无符号长)old_end&(页面大小-1))== 0)'失败。

我在做什么错了?

0 个答案:

没有答案