求大神,关于C语言的问题

typedef struct Node
{
ElemType data;
struct Node next;
}Node;
typedef struct Node *LinkList; /
定义LinkList */

/* 初始化顺序线性表 /
Status InitList(LinkList *L)
{
*L=(LinkList)malloc(sizeof(Node)); /
产生头结点,并使L指向此头结点 /
if(!(*L)) /
存储分配失败 /
return ERROR;
(*L)->next=NULL; /
指针域为空 */

return OK;

}

typedef 将struct Node * 替换成了 LinkList
那么形参那地方应该是指向结构体的指针变量
不是应该写成LinkList L吗 怎么写的是*L才对

 typedef struct Node *LinkList; 此时LinkList为struct Node*类型;现在就可以用LinkList来定义类型;Status InitList(LinkList *L)中形参没有错;
 L是一个二级指针,为指向指针得指针;调用该函数得实参为一个一级指针,然后把该实参指针得地址给传递进来,就这样间接得赋值;

你这个程序问题多多呀,至于你说的问题,要想把L 的内容回传到函数外,必须要用指针的指针,即struct Node **L。

 如果函数参数不是一个二级指针,那么函数得不是返回状态值,而是返回一个地址,即为分配好的链表得地址;