2維陣列得指標連結問題??? |
尚未結案
|
cherng32
一般會員 發表:26 回覆:24 積分:10 註冊:2002-09-18 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
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 發送簡訊給我 |
不好意思,因為沒有用過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 發送簡訊給我 |
cherng32您好...
我寫的那段程式碼並不是DELPHI內建的結構..
如果您是資工資管相關科系..應該知道"資料結構"
如果不是..仿間也有很多書籍..配合程式語言的..
因為您的問題..在資料結構中..就是一種樹狀結構
樹狀結構有幾個基本要素所構成..
NODE..節點..
父節點..根節點..子節點..兄弟節點..等等
相信您看了資料結構的書籍之後..就會了解如何用樹狀結構解決問題..
您的程式...只要每讀依次原始資料..就找您之前建立的樹..若找不到父結點
就在最適合處建立一個子節點...例如..您已經有1..2..3..4..節點了
當12近來的時候..您就要把它建立在1的節點之下..1就是父結點..12是1的子節點... 相信研究完之後..能夠輕易的解決您的問題...
GOOD LUCK
|
jimmy_wei
高階會員 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
給你一個我那天無聊拿來....把圖片放進樹裡的範例....
你參考一下吧....
順便一提,樹狀結構和"遞回"的實做.....
因為我遞回這個方法來寫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;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |