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

C語言轉換成Delphi

答題得分者是:Stallion
inglong
初階會員


發表:28
回覆:27
積分:36
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-07 18:35:49 IP:220.132.xxx.xxx 未訂閱
小弟正在實做資料結構(C語言的書) 想要用Delphi實現 遇到一些問題 以下是C code 問題一: /*宣告一鏈結節點資料結構*/ #define M 10 typedef struct node{ int key; struct node *next; }NODE; NODE *list,*z; 問題二: #define MAX 32767 void initial(void) { z=(NODE *) malloc (sizeof(NODE)); <===這句是動態增加陣列? z->key=MAX; z->next=z; list=(NODE *) malloc (sizeof(NODE)); <==同上;那Delphi要如何寫? list->key=-1; list->next=z; } 可以幫我將以上書本的範例 轉成Delphi嗎 小弟有嚐試過不過都失敗 以下是我自己轉換有問題的 type node=class private key:integer; next:^node; <===有問題; public procedure initial(z,list:node); end; procedure node.initial(z,list:node); var MAX:integer; begin MAX:=32767; setlength(z,??); <==轉自z=(NODE *) malloc (sizeof(NODE)); z.key:=MAX; z.next:=z.key; setlength(list,??); <==轉自list=(NODE *) malloc (sizeof(NODE)); list.key:=-1; list.next:=z.key; end; 何需Coding爭峰 千人指 萬人鋒 敢問Coding頂峰 三尺秋水塵不染 天下無雙
------
何需Coding爭峰
千人指 萬人鋒
敢問Coding頂峰
三尺秋水塵不染
天下無雙
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-07 19:59:43 IP:211.22.xxx.xxx 未訂閱
type
  pnext = ^node;
  node=record
   key:integer;
   NextNode:pnext;
end;    procedure initial(z,list:node);
var
 MAX:integer;
begin
 MAX:=32767;     z.NextNode := nil; // single linker list last element set to nil, to indicate that is the last.
 z.key:=MAX;     list.NextNode = new sizeof(node);
 list.key:=-1;
 list.NextNode:=z;
end;
---------------------------------------------- We will either find a way, or make one. -Hannibal -。
inglong
初階會員


發表:28
回覆:27
積分:36
註冊:2004-08-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-07 21:42:03 IP:220.132.xxx.xxx 未訂閱
引言:
type
  pnext = ^node;
  node=record
   key:integer;
   NextNode:pnext;
end;    procedure initial(z,list:node);
var
 MAX:integer;
begin
 MAX:=32767;     z.NextNode := nil; // single linker list last element set to nil, to indicate that is the last.
 z.key:=MAX;     list.NextNode = new sizeof(node);
 list.key:=-1;
 list.NextNode:=z;
end;
---------------------------------------------- We will either find a way, or make one. -Hannibal -。
謝謝您幫我解答 第一個問題已經解決 不過仍有些問題 就是 list.NextNode := new sizeof(node); <===這句 list.key:=-1; list.NextNode:=z; <===還有這句 在編譯時,好像會有問題 可以在幫我看看嗎 謝謝^^ 何需Coding爭峰 千人指 萬人鋒 敢問Coding頂峰 三尺秋水塵不染 天下無雙
------
何需Coding爭峰
千人指 萬人鋒
敢問Coding頂峰
三尺秋水塵不染
天下無雙
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-07 22:23:38 IP:211.22.xxx.xxx 未訂閱
不好意思,改一下~
type
  pNode = ^node;
  node=record
   key:integer;
   NextNode:pNode;
end;    procedure initial(z,list:Node);
var
 MAX:integer;
begin
 MAX:=32767;     z.NextNode := nil; // single linker list last element set to nil, to indicate that is the last.
 z.key:=MAX;     new(list.NextNode);
 list.key:=-1;
 list.NextNode:=z;
end;
我只是順著你的例子改,但是建議所有的結構指標都要動態產生,這樣串列連結用起來比較合理,也就是說: procedure initial(z,list:pNode);//這個參數型態要改,然後z,list參數本身也要動態要記憶體。 發表人 - stallion 於 2005/09/07 22:28:47
inglong
初階會員


發表:28
回覆:27
積分:36
註冊:2004-08-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-07 22:46:47 IP:220.132.xxx.xxx 未訂閱
引言: 不好意思,改一下~
type
  pNode = ^node;
  node=record
   key:integer;
   NextNode:pNode;
end;    procedure initial(z,list:Node);
var
 MAX:integer;
begin
 MAX:=32767;     z.NextNode := nil; // single linker list last element set to nil, to indicate that is the last.
 z.key:=MAX;     new(list.NextNode);
 list.key:=-1;
 list.NextNode:=z;
end;
我只是順著你的例子改,但是建議所有的結構指標都要動態產生,這樣串列連結用起來比較合理,也就是說: procedure initial(z,list:pNode);//這個參數型態要改,然後z,list參數本身也要動態要記憶體。 發表人 - stallion 於 2005/09/07 22:28:47
謝謝你唷 學到很多^^ 何需Coding爭峰 千人指 萬人鋒 敢問Coding頂峰 三尺秋水塵不染 天下無雙
------
何需Coding爭峰
千人指 萬人鋒
敢問Coding頂峰
三尺秋水塵不染
天下無雙
系統時間:2024-04-27 9:47:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!