C语言的数据结构问题(菜鸟级,入门级)

来源:百度知道 编辑:UC知道 时间:2024/05/18 03:57:21
Typedef char datatype;
Typedef struct node{
datatype data;
struct node *next;
}listnode;

typedef listnode *linklist;··①
listnode *p;·······②
linklist head;······③
第①句的typedef语句怎么理解?
第②句和第③句有什么不一样?两个不是都是定义指针吗?
在第①句中typedef是不是相当于把listnode命名为*linklise?

typedef listnode *linklist;
/*定义了指向listnode结构体的指针类型,不是相当于把listnode命名为*linklise,因为命名规则不允许出现"*"符号*/
---------------------------
listnode *p;//定义p为指向listnode结构体的指针
---------------------------
linklist head;//定义一个linklist类型的head变量

Typedef struct node{
datatype data;
struct node *next;
}listnode;
/*用listnode代表node*/

typedef listnode *linklist;
//用linklist代表listnode *

listnode *p <=> struct node *p
linklist head <=> listnode *head <=> struct node *head

两都其实是一样的,文字游戏而己

一类型定义,将 linklist 定义为 listnode * [listnode的指针类型]
二在有第①定义的情况下,②和③是同一个定义只是变量名不同而已。
三不是。

typedef listnode *linklist;是定义*linklist为指向listnode的类型指针,它是一种指针类型
而listnode *p只是指向listnode的一个指针变量,它跟linklist head;是意思一样的