線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2370
推到 Plurk!
推到 Facebook!

Linked List 小問題

尚未結案
benben
一般會員


發表:1
回覆:3
積分:0
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-03 20:26:47 IP:220.141.xxx.xxx 未訂閱
我問一個極蠢的小問題 通常在做Linked List node的宣告時,不外乎用 class node{ datatype x; node link; } 來宣告, 可是我有個疑問是,為什麼clas裡的link可以宣告成node? 有點不能理解,不知道誰可幫我解答。謝謝。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-04 00:12:35 IP:61.62.xxx.xxx 未訂閱
hi, 通常是宣告為 node *link; 也就是指向下一個的指標, 而非如你寫的 node link (instance), 這樣就可以方便將這一串的串列串起來囉. 也請參考這篇, http://www.hcl.idv.tw/c/linkedlist.htm
benben
一般會員


發表:1
回覆:3
積分:0
註冊:2004-08-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-05 00:18:37 IP:220.141.xxx.xxx 未訂閱
引言: hi, 通常是宣告為 node *link; 也就是指向下一個的指標, 而非如你寫的 node link (instance), 這樣就可以方便將這一串的串列串起來囉. 也請參考這篇, http://www.hcl.idv.tw/c/linkedlist.htm
嗯,謝謝呢,不過我的疑問是為什麼可以宣告成node呀?node不是內建的資料型態,必需要自己寫class來定義,但在宣告node link時,node還沒有定義呀,那為什麼可以用nod來宣告?
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-05 01:27:38 IP:61.62.xxx.xxx 未訂閱
基本上, 這是一個比較特殊的作法, 在自己的 struct 或 class 中是可以定義指向自己相同型態的指標, 在非這種狀況下, 確實會有你說的問題存在, 所以要使用前必須先定義完成是沒錯的!
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-06 22:02:44 IP:221.169.xxx.xxx 未訂閱
是啊。你覺得奇怪吧。 可是你有沒有發現。其實,在宣告時。你略過了個東西 typedef...... 在http://www.hcl.idv.tw/c/linkedlist.htm 裏面有寫到 typedef struct node { /* 以結構體表示節點*/ int data; /* data儲存節點資料項目*/ struct node *next; /* next儲存下一個節點位址 */ } NODE ; /* NODE 表新定義之節點結構資料型態 */ 如果你查一下typedef 的話。你就可以知道它用處了。 http://www.phim.unibe.ch/comp_doc/c_manual/C/EXAMPLES/linklst3.c 這是另一個網站對這個 typedef 的說明,也是用 linklist 做例子。 當然,你用的是class, 而 class 可以視為一個特殊的 struct. 而如果你的問題在於compiler怎麼會認識它?要預留多大的SIZE的話。 基本上pointer 所佔的size是固定的。 所以compiler不會有問題發生。
benben
一般會員


發表:1
回覆:3
積分:0
註冊:2004-08-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-07 00:02:27 IP:220.141.xxx.xxx 未訂閱
引言: 基本上, 這是一個比較特殊的作法, 在自己的 struct 或 class 中是可以定義指向自己相同型態的指標, 在非這種狀況下, 確實會有你說的問題存在, 所以要使用前必須先定義完成是沒錯的!
特殊用法喔?真的? 這樣我比較能接受。我想了很久,實在是沒辦法想法它的奧妙,怎麼可以自己裡的型態定義成自己? 不好意思,可否在請問,假設我是使用java來coding呢?java語言的特色對於這種宣告會不會有更好的解釋?
benben
一般會員


發表:1
回覆:3
積分:0
註冊:2004-08-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-07 00:07:14 IP:220.141.xxx.xxx 未訂閱
引言: 是啊。你覺得奇怪吧。 可是你有沒有發現。其實,在宣告時。你略過了個東西 typedef...... 在http://www.hcl.idv.tw/c/linkedlist.htm 裏面有寫到 typedef struct node { /* 以結構體表示節點*/ int data; /* data儲存節點資料項目*/ struct node *next; /* next儲存下一個節點位址 */ } NODE ; /* NODE 表新定義之節點結構資料型態 */ 如果你查一下typedef 的話。你就可以知道它用處了。 http://www.phim.unibe.ch/comp_doc/c_manual/C/EXAMPLES/linklst3.c 這是另一個網站對這個 typedef 的說明,也是用 linklist 做例子。 當然,你用的是class, 而 class 可以視為一個特殊的 struct. 而如果你的問題在於compiler怎麼會認識它?要預留多大的SIZE的話。 基本上pointer 所佔的size是固定的。 所以compiler不會有問題發生。
我看了typedef(http://home.educities.edu.tw/peterhuang1/Clan/CLanTypedef.htm)的解釋了。 不過,我還是不能體會耶… 因為 typedef struct node { int data; struct node *next; } NODE ; 中,還是直接拿尚未instance的node來定義裡頭的型態呀… 能不能請您在給點提示? 謝謝。 另外,可否在請問假設我是用java來coding的話呢?java沒有指標的方式,會有什麼影響?
系統時間:2024-05-02 20:54:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!