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;
}
}
你结构体应该是这样创建的吧
typedef struct LNode{
int data;
LNode *next;
}LNode,*LinkList;
Linklist其实就是LNode*,也就是一个指针变量,指针是只存了地址的,如果你不用malloc给它分配空间,是会出错的
你这代码根本是错的,因为你让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;
...