亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么下面這個數據結構里把結構體聲明為Node,結構體中的指針域也是一個Node

為什么下面這個數據結構里把結構體聲明為Node,結構體中的指針域也是一個Node

typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}Node;typedef struct Node *LinkList;
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

首先,應該是要建立一個鏈表。那么你結構體內部必須要有一個指針指向下一個節點的地址。而結構體內部的 struct Node *next; 就充當了這一個角色

查看完整回答
反對 回復 2018-10-29
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

不知道你的疑惑是不是 為什么在Node還沒有定義完的情況下我們就能用Node *next作為它的元素? 
如果你是問這個的話,我倒是可以說說我的看法。因為c語言中指針都是占32bit或者64bit的數據,在同一個系統中,指針占用的內存空間都是一樣的。所以在編譯階段,

typedef struct Node{
ElemType data;
struct Node *next;
}Node;

typedef struct Node{
ElemType data;
xxx *next;
}Node;

是等效的,struct Node *next;xxx *next;都是一個占32bit或者64bit的數據類型。只有在后面使用Node后,struct Node *next;xxx *next;才會有區別。
你可以試試這樣,

typedef struct Node{
ElemType data;
struct Node next;
}Node;

就是next不是指針,而就是Node。這就會報錯

error: field ‘next’ has incomplete type

因為這個時候Node并沒有定義完,編譯器都不知道要給他分配多少內存空間。

如果你想問的不是這個,那就忽略我的回答吧。


查看完整回答
反對 回復 2018-10-29
  • 2 回答
  • 0 關注
  • 1596 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號