結構體定義
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連接在一起考慮,這就是容易引起疑惑的地方。