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

指標

尚未結案
avalokita
一般會員


發表:29
回覆:35
積分:12
註冊:2003-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-15 21:30:51 IP:211.74.xxx.xxx 未訂閱
設有以下的型態 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有什麼差別... 我實再都搞糊塗了...@.@
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-15 23:24:31 IP:211.76.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-17 17:25:03 IP:61.218.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-19 22:37:36 IP:203.70.xxx.xxx 未訂閱
謝謝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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-20 14:19:24 IP:61.218.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-24 09:17:05 IP:211.74.xxx.xxx 未訂閱
再一次地謝謝change.jian前輩: 這麼用心、且這麼詳盡地為後學解答問題! < >< >< >< >< >< >< >< >
系統時間:2024-05-17 20:08:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!