数据结构中,单链表节点初始化问题

void CreateListF(LinkList L, int a[], int n)
{
LNode *s;
int i;

L= (LNode*)malloc(sizeof(LNode));        //!!!这步是不是没有必要,L不是已经实例化了吗?
L->next = NULL;    

for(i = 0; i <= n; i++)
{
    s = (LNode*)malloc(sizeof(LNode));
    s->data = a[i];
    s->next = L->next;
    L->next = s;
}

}

2个回答

你这代码根本是错的,因为你让L指向malloc分配的地址,但是不会作用到调用者的实参上。你得这么写

 void CreateListF(LinkList * L, int a[], int n)
{
LNode *s;
int i;

*L= (LNode*)malloc(sizeof(LNode));        //!!!这步是不是没有必要,L不是已经实例化了吗?
(*L)->next = NULL;    

for(i = 0; i <= n; i++)
{
    s = (LNode*)malloc(sizeof(LNode));
    s->data = a[i];
    s->next = L->next;
    (*L)->next = s;
}
}

调用
LinkList * L1;
CreateListF(L1, a, n);
LinkList L = L1;
...

你结构体应该是这样创建的吧

 typedef struct LNode{
    int data;
    LNode *next;
}LNode,*LinkList;

Linklist其实就是LNode*,也就是一个指针变量,指针是只存了地址的,如果你不用malloc给它分配空间,是会出错的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐