關於單鏈表結構體定義結點時 LNode *LinkList的理解
阿新 • • 發佈:2020-12-25
typedef struct LNode{
ElemType data; //資料域
struct LNode *next; //指標域
}LNode, *LinkList
先說結論,這個就可以直接理解為
第一個是便於定義變數的型別為LNode,如果沒有使用typedef,定義時就需要寫 struct LNode Lnode;
第二個是便於定義指向LNode這個型別的指標
其還有一個作用:
LNode * 一般強調的是返回的是一個結點
LinkList 一般強調的是這是一個單鏈表
比如在上面這個栗子中
舉個栗子:
在表示一個單鏈表時,只需宣告一個頭指標L,指向單鏈表的第一個結點(也就是頭結點)
Lnode *L //宣告一個指向單鏈表第一個節點的指標
LinkList L //和上面功能相同
可以看到,很明顯用LinkList使得程式碼可讀性更強了。
typedef的作用就是為型別新增別名,可以增加程式碼的擴充套件性,特別是在有時候型別需要用通用的ElemType去泛指的時候,其就達到了一種解耦的效果,這裡還需要注意的是其需要與結構體變數區分開來,結構體變數並不是定義的別名.
例如,對於這個程式碼
struct LNode{
ElemType data; //資料域
struct LNode *next; //指標域
}LNode
就等於 Struct LNode LNode; 等同於定義了一個LNode型別的變數,名為 LNode.