以建立二元數來做通訊錄 |
|
sandy
一般會員 發表:2 回覆:5 積分:1 註冊:2002-04-17 發送簡訊給我 |
|
huwk
資深會員 發表:26 回覆:340 積分:323 註冊:2002-04-03 發送簡訊給我 |
引言: 有沒有人會做通訊錄,建立二元數方式來做姓名.座號..星座..當後鍵質是數字 新增,刪除,尋找及列印.中序走法把所有資料列出來.. 因為這個程式有關我期末考的分數, 所有希望有人能懂得這程式 幫幫我....而我也會繼續加油看看能不能做出來... unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type ta = class public Name : String; Nta : ta; end; TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Button2: TButton; Edit1: TEdit; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public snode : ta; { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Snode := nil; end; procedure TForm1.Button1Click(Sender: TObject); var n : ta; begin {Add} n := snode; if n = nil then begin snode := ta.Create; snode.Name := Edit1.Text; end else begin while n.Nta <> nil do n := n.Nta; n.Nta := ta.Create; n.Nta.Name := edit1.Text; end; end; procedure TForm1.Button2Click(Sender: TObject); var n : ta; begin {show} n := snode; while not (n = nil) do begin Memo1.Lines.Add(n.Name); n := n.Nta; end; Memo1.Lines.Add('-----------------'); end; procedure TForm1.Button3Click(Sender: TObject); var n, n1 : ta; begin {delete} if snode = nil then exit; n := snode; if snode.Name = edit1.Text then begin snode := snode.Nta; n.Free; n := nil; end else while not (n.Nta = nil) do begin if n.Nta.Name = edit1.Text then begin n1 := n.Nta; n.Nta := n1.Nta; n1.Free; n1 := nil; break; end; n := n.nta; end; end; procedure freeTa(var n:Ta); begin if n.Nta <> nil then freeTa(n.Nta); form1.Memo1.Lines.Add(n.Name ', Free'); n.Free; n := nil; end; procedure TForm1.Button4Click(Sender: TObject); begin {free all} if snode <> nil then freeta(snode); end; end.用單向串列做了一個... 可新增可show...可delete... 可參考看看.. 若要修改成二元數..要先知道要如何區分資料...
------
熊的學習 http://huwk.blogspot.com |
sandy
一般會員 發表:2 回覆:5 積分:1 註冊:2002-04-17 發送簡訊給我 |
|
G01
高階會員 發表:249 回覆:379 積分:215 註冊:2002-05-21 發送簡訊給我 |
給一點提示.. type
TreeNode = Record //一各二元樹的節點元素
NodePos:integer; //節點的位置(於檔案中的實體位置)
keyData:string[255]; //鍵值資料(可用於判斷,尋找,排序二元樹資料)
data:string[255]; //實際完整節點資料
BigerNodePos:integer; //大於這個節點Key資料的下一個節點
SmallNodePos:integer; //小於這個節點Key資料的下一個節點
ParentNodePos:integer;//
end; 再運用一下,課堂上學到的知識....應該沒有問題了!!
|
amyhu
一般會員 發表:1 回覆:2 積分:0 註冊:2003-06-25 發送簡訊給我 |
不好意思,想請問一下,如果要在這插入一個節點呢?
我多寫了這個程式,但show出來時都會少節點..而且少的節點都是插入的節點之前的節點..要怎麼改才能show出完整的呢?
procedure TForm1.Button5Click(Sender: TObject);
var n,aa:ta;
begin
{插入}
n := snode;
if snode.Name = edit2.Text then
begin
snode := ta.Create;
snode.Name := Edit1.Text;
end
else
while not (n.Nta = nil) do
begin
if n.Nta.Name = edit2.Text then //插在edit2.text的節點前
begin
aa:=n.Nta;
snode := ta.Create;
snode.Name := Edit1.Text; //插入的節點名稱
snode.Nta:=aa;
break;
end;
n := n.nta;
end;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |