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

2維陣列得指標連結問題???

尚未結案
cherng32
一般會員


發表:26
回覆:24
積分:10
註冊:2002-09-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-10 03:36:14 IP:140.127.xxx.xxx 未訂閱
大家好:   不好意思我是新手< >< >,對指標連結還不是很熟,想請教一下大家,我用2維陣列將資料分組(如下圖),但在2維陣列中要如何產成如圖右邊的連結關係呢??還是需要單獨用一維陣列存才行???? 謝謝大家 因為有 >< src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=15019318&CC=335902">
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-10 18:42:08 IP:219.68.xxx.xxx 未訂閱
cherng32您好.. 您的問題不適合用二維陣列來表示..要用樹狀結構 您可以建立一個結構如下
TRootNood=record   //根節點結構
   SonNode:array of TNode;  //子節點
   NodeCount:integer      //子結點的個數
end;    TNode=record       //子結點結構
   SonNode:array of TNode;  //子節點
   FatherNode:TNode;      //父節點
   Data:integer;          //原始資料
   NodeCount:integer      //子結點的個數
end;    這樣每一筆資料就是一個NODE..Data就是您的原始資料
   var A:TRootNood;
一開始先建立一個TRootNood..
   A.NodeCount=0;
1來的時候..
   A.NodeCount:=A.NodeCount 1;
   Setlength(A.SonNode,A.NodeCount)
   A.SonNode[A.NodeCount-1]:=1;
2來的時候..
   A.NodeCount:=A.NodeCount 1;
   Setlength(A.SonNode,A.NodeCount)
   A.SonNode[A.NodeCount-1]:=2;
以此類推..
然後您要判斷每次進來的資料..有幾個字..就代表他的層數..
丟資料要寫成函數..參數型態是Tnode..
這跟指標應該沒什麼關係了..就只是單純的樹的觀念..
GOOD LUCK
cherng32
一般會員


發表:26
回覆:24
積分:10
註冊:2002-09-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-11 00:12:13 IP:140.127.xxx.xxx 未訂閱
不好意思,因為沒有用過tree的結構,所以這個部分我並不是很清楚,可以說明的詳細一點嗎??謝謝!! [code] TRootNood=record //根節點結構 SonNode:array of TNode; //子節點 NodeCount:integer //子結點的個數 end; TNode=record //子結點結構 SonNode:array of TNode; //子節點 FatherNode:TNode; //父節點 Data:integer; //原始資料 NodeCount:integer //子結點的個數 end;
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-13 14:51:23 IP:219.68.xxx.xxx 未訂閱
cherng32您好... 我寫的那段程式碼並不是DELPHI內建的結構.. 如果您是資工資管相關科系..應該知道"資料結構" 如果不是..仿間也有很多書籍..配合程式語言的.. 因為您的問題..在資料結構中..就是一種樹狀結構 樹狀結構有幾個基本要素所構成.. NODE..節點.. 父節點..根節點..子節點..兄弟節點..等等 相信您看了資料結構的書籍之後..就會了解如何用樹狀結構解決問題.. 您的程式...只要每讀依次原始資料..就找您之前建立的樹..若找不到父結點 就在最適合處建立一個子節點...例如..您已經有1..2..3..4..節點了 當12近來的時候..您就要把它建立在1的節點之下..1就是父結點..12是1的子節點...    相信研究完之後..能夠輕易的解決您的問題... GOOD LUCK
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-13 17:04:09 IP:210.243.xxx.xxx 未訂閱
給你一個我那天無聊拿來....把圖片放進樹裡的範例.... 你參考一下吧.... 順便一提,樹狀結構和"遞回"的實做..... 因為我遞回這個方法來寫tree是最方便的 procedure TForm1.BitBtn1Click(Sender: TObject); var Image: TImageJimmy; TreeNode: TTreeNode; begin Inc(iNodeCount); Image:= TImageJimmy.Create; // TreeNode:= TTreeNode.Create(nil); try Image.ImagePath:= FileListBox1.FileName; TreeView1.Items.AddChildObject(nil,'更更更' IntToStr(iNodeCount),Image); finally // Image.Free; end; end; procedure TForm1.FormShow(Sender: TObject); begin iNodeCount:= 0; FileListBox1.Directory:= 'D:\'; end; procedure TForm1.FileListBox1DblClick(Sender: TObject); begin Image1.Picture.LoadFromFile(FileListBox1.FileName); end; procedure TForm1.TreeView1DblClick(Sender: TObject); var i: Integer; sImagePath: String; begin // i:= TreeView1.Selected.Index; for i:=0 to TreeView1.Items.Count-1 do begin if TreeView1.Items.Item[i].Selected then begin sImagePath:= TImageJimmy(TreeView1.Items.Item[i].Data).ImagePath; Image1.Picture.LoadFromFile(sImagePath); end; end; end;
系統時間:2024-05-16 14:35:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!