3 回答

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
首先,應(yīng)該是要建立一個(gè)鏈表。那么你結(jié)構(gòu)體內(nèi)部必須要有一個(gè)指針指向下一個(gè)節(jié)點(diǎn)的地址。而結(jié)構(gòu)體內(nèi)部的 struct Node *next;
就充當(dāng)了這一個(gè)角色

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
每個(gè)Node是一個(gè)結(jié)構(gòu)體,包含兩個(gè)元素,第一個(gè)元素是ElemType類型的data,第二個(gè)元素是Node指針類型。so what?

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
不知道你的疑惑是不是 為什么在Node還沒有定義完的情況下我們就能用Node *next作為它的元素?
如果你是問這個(gè)的話,我倒是可以說說我的看法。因?yàn)閏語言中指針都是占32bit或者64bit的數(shù)據(jù),在同一個(gè)系統(tǒng)中,指針占用的內(nèi)存空間都是一樣的。所以在編譯階段,
typedef struct Node{ ElemType data; struct Node *next; }Node;
和
typedef struct Node{ ElemType data; xxx *next; }Node;
是等效的,struct Node *next;
和xxx *next;
都是一個(gè)占32bit或者64bit的數(shù)據(jù)類型。只有在后面使用Node后,struct Node *next;
和xxx *next;
才會(huì)有區(qū)別。
你可以試試這樣,
typedef struct Node{ ElemType data; struct Node next; }Node;
就是next不是指針,而就是Node。這就會(huì)報(bào)錯(cuò)
error: field ‘next’ has incomplete type
因?yàn)檫@個(gè)時(shí)候Node并沒有定義完,編譯器都不知道要給他分配多少內(nèi)存空間。
如果你想問的不是這個(gè),那就忽略我的回答吧。
- 3 回答
- 0 關(guān)注
- 612 瀏覽
添加回答
舉報(bào)