全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:832
推到 Plurk!
推到 Facebook!

以建立二元數來做通訊錄

 
sandy
一般會員


發表:2
回覆:5
積分:1
註冊:2002-04-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-05-31 15:14:52 IP:163.28.xxx.xxx 未訂閱
有沒有人會做通訊錄,建立二元數方式來做姓名.座號..星座..當後鍵質是數字 新增,刪除,尋找及列印.中序走法把所有資料列出來.. 因為這個程式有關我期末考的分數, 所有希望有人能懂得這程式 幫幫我....而我也會繼續加油看看能不能做出來...
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-01 01:28:17 IP:202.178.xxx.xxx 未訂閱
引言: 有沒有人會做通訊錄,建立二元數方式來做姓名.座號..星座..當後鍵質是數字 新增,刪除,尋找及列印.中序走法把所有資料列出來.. 因為這個程式有關我期末考的分數, 所有希望有人能懂得這程式 幫幫我....而我也會繼續加油看看能不能做出來...
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-07 14:06:15 IP:192.192.xxx.xxx 未訂閱
嗯.....可是我還是有點給他搞不懂吶. 因為我對這門還不太能了解.. 可否再告訴我詳細點...
G01
高階會員


發表:249
回覆:379
積分:215
註冊:2002-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-09-16 10:32:45 IP:210.61.xxx.xxx 未訂閱
給一點提示.. 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-13 11:23:26 IP:220.130.xxx.xxx 未訂閱
不好意思,想請問一下,如果要在這插入一個節點呢? 我多寫了這個程式,但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;
系統時間:2024-05-17 14:37:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!