[問題] C語言 指標傳遞問題

看板C_and_CPP (C/C++)作者 (秀秀)時間15年前 (2011/05/19 14:39), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
C語言問題: 建造一個完整二元樹,並且用遞迴的方式找尋空的葉節點做分枝. #include <stdio.h> #include <stdlib.h> #include <malloc.h> struct TreeData{ int TreeNum; }; struct CreatTree{ struct TreeData data; struct CreatTree *liftnode; struct CreatTree *rightnode; }; typedef struct CreatTree CreatTree; void creattree(struct CreatTree *currentnode){ int num; if(currentnode!=NULL) { creattree(currentnode->liftnode); creattree(currentnode->rightnode); } else { currentnode=malloc(sizeof(CreatTree)); currentnode->liftnode=NULL; currentnode->rightnode=NULL; printf("輸入樹葉數值:"); scanf("%d",&num); currentnode->data.TreeNum=num; } } int main() { int num; int i=0; struct CreatTree *newPtr,*startPtr; startPtr=NULL; while(i<3) { if(startPtr==NULL) { newPtr=malloc(sizeof(CreatTree)); newPtr->liftnode=NULL; newPtr->rightnode=NULL; printf("輸入樹根數值:"); scanf("%d",&num); newPtr->data.TreeNum=num; startPtr=newPtr; } else { creattree(startPtr); } i++; } system("pause"); return 0; } 我的問題是,目前知道可能是需要傳參考值在void. 因為不傳參考值就會建立一個新的記憶體位置(我是這樣想) 然後結果就是while(i<n) 每次都建造一個新的深度2的二元樹,並沒有跟main的樹做連接. 希望有高手可以教一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.241.95

05/19 14:55, , 1F
http://pastie.org/1925462 大概往這個方向去改
05/19 14:55, 1F

05/19 15:00, , 2F
不過我看不太懂你 creattree 裡的邏輯
05/19 15:00, 2F

05/19 18:15, , 3F
感謝你我想我一直卡在&(*currentnode)->liftnode的邏輯
05/19 18:15, 3F

05/19 18:17, , 4F
我嘗試輸出看看,我想目前因該很正確
05/19 18:17, 4F

05/19 18:20, , 5F
給你點一下有比較通,自己改了好久哈哈= =+ 謝謝你啦
05/19 18:20, 5F

05/19 18:25, , 6F
你也可以這樣寫 http://pastie.org/1926097 ...
05/19 18:25, 6F
文章代碼(AID): #1DrBirk- (C_and_CPP)
文章代碼(AID): #1DrBirk- (C_and_CPP)