[問題] 二元搜索樹觀念問題

作者: kdok123 (小天)   2014-09-05 20:23:01
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的初始位置,可是位址的變化跟我想的不一樣
請問該怎麼寫才能達到我的要求呢? 還有為什麼我這樣寫紀錄不起來...
作者: future314 (未來π)   2014-09-06 01:12:00
你可以試試字串處理 以空白鍵為分隔再用atoi如果要設頭點應該寫成T=head=(node*)malloc(......一點淺見
作者: kdok123 (小天)   2014-09-06 11:42:00
謝謝! 不過前面宣告malloc就沒有辦法進入!T的判別式了且這樣也還是沒有記錄到頭點><
作者: masan22305 (海豹)   2014-09-10 15:51:00
一開始T=head, 後續你也對T做malloc的動作, 那head呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com