|
发表于 2017-6-6 23:00:02
|
显示全部楼层
亲,刚刚言重了,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;
- }
复制代码
|
|