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

看板C_and_CPP作者 (小天)時間11年前 (2014/09/05 20:23), 11年前編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
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

09/06 01:12, , 1F
你可以試試字串處理 以空白鍵為分隔再用atoi
09/06 01:12, 1F

09/06 01:25, , 2F
如果要設頭點應該寫成T=head=(node*)malloc(......
09/06 01:25, 2F

09/06 01:27, , 3F
一點淺見
09/06 01:27, 3F

09/06 11:42, , 4F
謝謝! 不過前面宣告malloc就沒有辦法進入!T的判別式了
09/06 11:42, 4F

09/06 11:43, , 5F
且這樣也還是沒有記錄到頭點><
09/06 11:43, 5F

09/06 17:10, , 6F
該用什麼方式記錄頭節點? 試了好幾次還是記不起來...
09/06 17:10, 6F

09/10 15:51, , 7F
一開始T=head, 後續你也對T做malloc的動作, 那head呢?
09/10 15:51, 7F
文章代碼(AID): #1K2Qidx5 (C_and_CPP)