养绒山羊有利润吗:关于一个数据结构的问题

来源:百度文库 编辑:高考问答 时间:2024/04/28 07:04:40
/第一种线性表的单链表存储结构的方法/
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
其中的LNode,*LinkList怎么理解,怎么新类型定义和名称会有两个?(中间用逗号隔开)
/* 第二种线性表的单链表存储结构 */
typedef struct LNode
{
ElemType data;
struct LNode *next;
};
typedef struct LNode *LinkList; /* 另一种定义LinkList的方法 */

其中的第三个语句struct LNode *next 这个怎么理解?
如果愿意的话,可以加我的QQ:492371340

其中的LNode,*LinkList怎么理解,怎么新类型定义和名称会有两个?(中间用逗号隔开)

这样申明变量可以使用 LNode a; 申明指针可以使用LinkList a;这个和申明LNode *a;效果是一样的。

其中的第三个语句struct LNode *next 这个怎么理解?
定义一个成员指针,指向类型struct LNode 的一个变量,在这里是链表的下一个节点

第一个问题:同一个结构定义两个不同的名字而已,方便使用或记忆

第二个问题:struct LNode *next 是说这个next是个指针,指向的是一个LNode 结构

在C语言中,第一种写法是在声明结构体类型的同时定义了结构体变量LNode和指针型结构体变量LinkList。而第二种写法则是把结构体声明和指针型结构体变量LinkList定义分开来写。

至于struct LNode * next是在结构体LNode声明的指针类型成员,它指向struct LNode 类型数据。事实上一个指针类型成员既可以指向其他类型的结构体数据,也可以指向自己所在的结构体类型数据。这里是后者的用法,next指针指向其自身所在的结构体类型数据。