指標 |
尚未結案
|
avalokita
一般會員 發表:29 回覆:35 積分:12 註冊:2003-09-02 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
avalokita 您好:
引言: 設有以下的型態 Type link=^node; node=record info:integer; next:link; end; var head:link; p:link; 請問... new(p); p.info:=random(100); p.next:=nil; 其效果是不是等價於一個Node型態.... link和node有什麼差別... 我實再都搞糊塗了...@.@node:表示一個節點,或者說是一個記錄(record),只是多了一個變數(next)能儲存與此節點相同型態變數的位址。 link:就像C裡面的指標型態,可存某一個node節點的位址。 有了link型態我們就可以把目前節點與下一個節點連接起來,形成一個串列(List)。 若依照您的例子,當我們不指向另一個節點時,的確等效是一個孤立的Node。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
type link = ^node; //這行表示link這種型態是一種指標,一種專門指到node這種結構的指標, //^表示指標,而^node表示node這種資料型態的指標 node = record //宣告node是一種自訂的資料結構,內容如下 info:Integer; //這行不用解釋吧 next:link; //定義一個指標,一個專門指向node這種資料結構的指標,等於第一行的link end; var p:link; //宣告一個變數,名字叫P,是專門指向node這種資料結構的指標,也就是link new(p); //為P這個指標配置一塊大小可以容維node資料結構的記憶體 p.info:=random(100); p.next:=nil; //表示沒有下個節點了這樣了嗎? |
avalokita
一般會員 發表:29 回覆:35 積分:12 註冊:2003-09-02 發送簡訊給我 |
謝謝change.jian前輩:
這麼用心、且這麼詳盡地為後學解答問題!
然而晚生真正搞迷胡的地方在後面...@.@。
1.
new(p); //為P這個指標配置一塊大小可以容維node資料結構的記憶體
p.info:=random(100);
p.next:=nil; //表示沒有下個節點了
以上的程式碼..和底下有何差別呢?
p^.info:=random(100);
p^.next:=nil;
(因為Delphi的Code Complete機制都會暗示其結構...) 2.
此外,
且由於node結構裡的next是link型態,也是一種指標指向某個位址..
那麼..
p.next:=q; //q為一種Link型態....
p.next:=@r //R為一種node型態....
是否兩種都可以呢?? 我一直搞不清楚..在學Linklist時..
是以Node為主體,還是以Link.....
new(Link)等價於一個node嗎??
處理其來又有何分別? @.@
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
p^.info:=random(100) 與 p.info:=random(100)是一樣的意思
^擺在某種型態的前面,表示是這種型態的指標,用於宣告型態,如
link=^node; 而^擺在某個指標的後面,表示是到該指標所指的記憶體位置去取值. 正常而言,p^.info才是正確的寫法,只是Delphi幫我們省去這段,所以你直接以p.info也是可以的 而@表示取出某個變數的記憶體位置,其實就等於指標.所以,如果你宣告了一個變數,r:node,要把r接到p的後面,可以用p.next=@r,但,記得,這裡的r必需是變數型態,不能為指標型態. 這樣了嗎?
引言: 謝謝change.jian前輩: 這麼用心、且這麼詳盡地為後學解答問題! 然而晚生真正搞迷胡的地方在後面...@.@。 1. new(p); //為P這個指標配置一塊大小可以容維node資料結構的記憶體 p.info:=random(100); p.next:=nil; //表示沒有下個節點了 以上的程式碼..和底下有何差別呢? p^.info:=random(100); p^.next:=nil; (因為Delphi的Code Complete機制都會暗示其結構...) 2. 此外, 且由於node結構裡的next是link型態,也是一種指標指向某個位址.. 那麼.. p.next:=q; //q為一種Link型態.... p.next:=@r //R為一種node型態.... 是否兩種都可以呢?? 我一直搞不清楚..在學Linklist時.. 是以Node為主體,還是以Link..... new(Link)等價於一個node嗎?? 處理其來又有何分別? @.@ |
avalokita
一般會員 發表:29 回覆:35 積分:12 註冊:2003-09-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |