看板 C_and_CPP 關於我們 聯絡資訊
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