结构体定义
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
上述语句等价于:
struct Lnode1 { int data; struct Lnode *next;} ;
和
typedef struct Lnode1 Lnode2;
//注意这里的”struct Lnode1″是一个整体,表明”Lnode1″是一个结构体类型,作用是在下文把”struct Lnode1″重命名为”Lnode2″,以后就可以不用写”struct”了,直接使用”Lnode2″定义结构体变量或指针等等。
即可以将
struct Lnode1 node;//定义一个Lnode1类型的结构体,命名为node
//简写为
Lnode2 node;//与上一句作用相同。
同理,在定义链表时
typedef struct Lnode1* LinkList;
把struct Lnode1* 重命名为LinkList,以后就可以使用LinkList来简化定义Lnode*类型的变量了(而且还是个指向struct变量的指针)。 应该把定义中的那个*与前面的结构体连接在一起考虑,而不是与后面的LinkList连接在一起考虑,这就是容易引起疑惑的地方。
版权声明:本文为HouraisanF原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。