[求助]关于数据结构的头结点(*L)

define OK 1

define ERROR 0

define TRUE 1

define FALSE 0

define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等/
typedef int ElemType; /
ElemType类型根据实际情况而定,这里假设为int */

typedef struct Node
{

ElemType data;
struct Node *next;

}Node;

typedef struct Node *LinkList;

Status InitList(LinkList *L)
{

*L=(LinkList)malloc(sizeof(Node)); /* 产生头结点,并使L指向此头结点 */
if(!(*L)) /* 存储分配失败 */
{
     
return ERROR;
}
(*L)->next=NULL; /* 指针域为空 */
return OK;

}

问题是:

(*L)->next=NULL; /* 指针域为空 */
这一句,
(*L)  结构体指针变量这个形态的话,不是不能用->的吗?
《大话数据结构》里面没有详细说,我是真的不懂。。。

求助。。。

感谢您为本话题评分。
共有1个回答
  • 0

        结构体变量调用结构体的数据使用成员运算符(.),比如L.data,但是这里的L是一个存放了指向结构体指针的地址的变量,即二级指针。所以(*L)其实是指向结构体变量的指针,指针调用数据当然是使用 -> 了。
       
    至于链表的初始化为什么要使用二级指针,这就是另一个问题了。

以下是预览效果,请确认排版好了再点回复。
如果你认为此话题有广告、灌水的嫌疑,请给此话题评一颗星。平均分低的话题将不会再显示。
良好的讨论氛围由大家共同维护。