C語言轉換成Delphi |
答題得分者是:Stallion
|
inglong
初階會員 發表:28 回覆:27 積分:36 註冊:2004-08-13 發送簡訊給我 |
小弟正在實做資料結構(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 發送簡訊給我 |
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 發送簡訊給我 |
引言:謝謝您幫我解答 第一個問題已經解決 不過仍有些問題 就是 list.NextNode := new sizeof(node); <===這句 list.key:=-1; list.NextNode:=z; <===還有這句 在編譯時,好像會有問題 可以在幫我看看嗎 謝謝^^ 何需Coding爭峰 千人指 萬人鋒 敢問Coding頂峰 三尺秋水塵不染 天下無雙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 -。
------
何需Coding爭峰 千人指 萬人鋒 敢問Coding頂峰 三尺秋水塵不染 天下無雙 |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
不好意思,改一下~
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 發送簡訊給我 |
引言: 不好意思,改一下~謝謝你唷 學到很多^^ 何需Coding爭峰 千人指 萬人鋒 敢問Coding頂峰 三尺秋水塵不染 天下無雙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頂峰 三尺秋水塵不染 天下無雙 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |