我收到了以下代码:
#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)'失败。
我在做什么错了?