作者kdok123 (小天)
看板C_and_CPP
標題[問題] 二元搜索樹觀念問題
時間Fri Sep 5 20:23:01 2014
struct node{
int data;
node* lchild,*rchild;
};
void createBST()
{
int item;
node *head=NULL, *T=NULL;
while(1){//問題一:這邊怎麼設置讓while跳出比較好?
//我是希望使用者輸入完一串數字後跳出ex:2 1 3 8 5
//用這些數字創建完一棵樹後跳出
T = head;//問題二:為了紀錄頭結點
scanf_s("%d",&item);
while(1){
if(!T){
T = (node*)malloc(sizeof(node));
T->data = item;
T->lchild = NULL;
T->rchild = NULL;
break;
}
if(item<T->data)
T = T->lchild;
else if(item>T->data)
T = T->rchild;
}
}
}
//////////////以下為問題///////////////
以上為自己寫的二元查找樹,希望使用者輸入一串數據後排列出來
問題一:請問要怎麼讓scanf把東西讀完後讓while測到呢?
我查到的都是EOF,但不能用在這
問題二:我做了一個頭結點想要紀錄T的初始位置,可是位址的變化跟我想的不一樣
請問該怎麼寫才能達到我的要求呢? 還有為什麼我這樣寫紀錄不起來...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409919783.A.EC5.html
※ 編輯: kdok123 (140.112.25.105), 09/05/2014 20:24:19
推 future314: 你可以試試字串處理 以空白鍵為分隔再用atoi 09/06 01:12
→ future314: 如果要設頭點應該寫成T=head=(node*)malloc(...... 09/06 01:25
→ future314: 一點淺見 09/06 01:27
→ kdok123: 謝謝! 不過前面宣告malloc就沒有辦法進入!T的判別式了 09/06 11:42
→ kdok123: 且這樣也還是沒有記錄到頭點>< 09/06 11:43
→ kdok123: 該用什麼方式記錄頭節點? 試了好幾次還是記不起來... 09/06 17:10
→ masan22305: 一開始T=head, 後續你也對T做malloc的動作, 那head呢? 09/10 15:51