亲,刚刚言重了,sorry。我来说你第一处错误typedef struct Node
{
int elem;
struct Node *next;
}Node, *LinkList;
这些你用了typedef进行替换,这里你写的Linklist其实是用来定义了一个结构体二维指针。所以你下面的代码L = (LinkList)malloc(sizeof(Node));
malloc函数返回的只不过是一个一维指针,所以这里错了。
如果我们把Linklist前面的*去了。还是错,为什么?L = (LinkList)malloc(sizeof(Node))
malloc返回了一个指针,我们要把它强制转化为Linklist指针类型,而不是Linklist类型。所以我们将它改为L = (LinkList *)malloc(sizeof(Node));
但还是有错误,比如L是LinkList类型,怎么能赋值为NULL呢?所以我将你的改为 LinkList *L = NULL;
InitList(L);
下面的取址符也给你去掉了。
还有你这段代码有个多余的Node,看下面你的代码,尽管你这些对,但不好:typedef struct Node
{
int elem;
struct Node *next;
}Node,LinkList;
所以我讲你错的多,你不要生气。你就写了这几行代码,结果我都给你改完了。#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int elem;
struct Node *next;
}Node,LinkList;
void InitList(LinkList *L)
{
L = (LinkList *)malloc(sizeof(Node));
L->next = NULL;
}
int main()
{
LinkList *L = NULL;
InitList(L);
return 0;
}
|