看板 Programming 關於我們 聯絡資訊
請問一下 讀入一個檔內容為: I A B C CN I B E F I F G H CN 主程式: void main(){ FILE *fp; char buffer[100]; char command[100]; char data1[100]; char data2[100]; char data3[100]; tree T; if((fp = fopen("testfile11.txt", "rt"))==NULL){ cout<<"File could not opened\n"; } else{ while(!feof(fp)){ fgets(buffer, sizeof(buffer), fp); sscanf(buffer, "%s%s%s%s",command,data1,data2,data3); if(strcmp(command,"I")==0){ T.insert(data1,data2,data3); } } T.traverse(IN_ORDER); } } 若是I指令把它接下去的三個字母insert進去.. 但是每執行一個insert指令他的root會重新跑到data1,而不是繼續之前所建的tree EX:讀入I A B C  root為A沒錯 讀入I B E F root變為B而不是原本的A ---------------------------------------------------------------------------- 但是如果 void main(){ FILE *fp; char buffer[100]; char command[100]; char data1[100]; char data2[100]; char data3[100]; tree T; if((fp = fopen("testfile11.txt", "rt"))==NULL){ cout<<"File could not opened\n"; } else{ T.insert("A","B","C"); T.insert("B","E","F"); T.insert("F","G","H"); T.traverse(IN_ORDER); } } 直接插入的話是可以的root不會跑掉 有誰可以告訴我為什麼嗎? 麻煩大家了>< tree實作 tree::tree(void) { root = current = 0; } void tree::insert(element a,element b,element c) { if (root == 0) { root = new node(a); root->left = new node(b); root->right = new node(c); } else{ node *t = findNode(a); t->left = new node(b); t->right= new node(c); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.219.142
oohay:不如share一下你的未完成程式碼,較好討論 218.160.115.7 12/22 10:04