[問題] C語言 指標傳遞問題
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
05/19 14:55, 1F
→
05/19 15:00, , 2F
05/19 15:00, 2F
→
05/19 18:15, , 3F
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
05/19 18:25, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章