線性表的鍊式存儲,下面這段程式碼
typedef struct Node{ ElemType e; struct Node *next; }Node,*LinkList;
LinkList p和Node p有什麼差別
ringa_lee
LinkList是指標型別,Node是結構體型態.LinkList 指標型別,Node是結構體型態.LinkList 指標型態的變數的使用可以用(*p).e 或p->e
LinkList
Node
指標型態的變數的使用可以用
或
如果你理解int a與int *a的區別,再理解了typedef int ElemType 你就可以理解上面例子。
int a
int *a
typedef int ElemType
typedef struct Node{ ElemType e; struct Node *next; } Node, *LinkList;
首先從外層看,typedef [] *** 就是把[] 中的類型重新定義成以***表示;例子中的意思就是說,中間的結構體類型變數struct Node{***} 在這裡可以用Node和*LinkList來表示了。而且,當需要宣告Node變數時,就可以用Node p當需要宣告struct Node p當需要宣告Node語變數來聲明;等同於struct Node *p 再看中間的結構體定義:
typedef [] ***
[]
***
struct Node{***}
*LinkList
Node p
struct Node p
struct Node *p
Node的結構體類型:這個結構體由一個ElemType類型的變數e和一個當前結構體類型指針*next*next*next*next*next
這個結構體由一個
e
*next
p->e🎜可以用🎜p.e🎜.🎜LinkList
是指標型別,Node
是結構體型態.LinkList
指標型別,Node
是結構體型態.LinkList
指標型態的變數的使用可以用
(*p).e或
p->e如果你理解
int a
與int *a
的區別,再理解了typedef int ElemType
你就可以理解上面例子。首先從外層看,
定義了一個別名typedef [] ***
就是把[]
中的類型重新定義成以***
表示;例子中的意思就是說,中間的結構體類型變數
struct Node{***}
在這裡可以用Node
和*LinkList
來表示了。而且,當需要宣告
Node
變數時,就可以用Node p
當需要宣告struct Node p
當需要宣告
Node
語變數來聲明;等同於struct Node *p
再看中間的結構體定義:
Node
*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next🎜*next 🎜而後你聲明的每一個該結構體類型的變數中都包含這兩個元素。 🎜的結構體類型:
這個結構體由一個
ElemType類型的變數
e
和一個當前結構體類型指針*next
*next*next
*next*next