ช่วยทำต่อให้ทีครับ การบ้านจะส่งจันนี้แล้ว ขอร้องละครับ
เรื่อง binary tree อะครับ ขั้นตอนการทำงาน 1. อ่านจาก ไฟล์ txt (คำศัพ คำแปล แล้วเว้นบรรทัด) 2. สร้าง โหนดขึ้นมา 3. เทียบว่า คำศัพที่ได้อยู่ซ้ายหรือขวาโหนด 4. ค้นหาคำศัพ
#include<iostream> #include<string> #include<fstream> #define WORD 200 #define REFER 1000 using namespace std;
class Node { public: char* word; char* refer; Node (char* word0,char* refer0) { this->word = new char[strlen(word0)+1]; strcpy(this->word,word0); this->refer = new char[strlen(refer0)+1]; strcpy(this->refer,refer0); /////////////////////// Life = Right = NULL; } Node* Life ; Node* Right; }; // GLOBAL
///////////////////////FUNCTION/////////////////////////// void addNode(char* word,char* refer,Node* &root) { Node* temp=root;
if (root==NULL) { root = new Node(word,refer); return ; } while (1) { if(strcmp(temp->word,word)==-1) { if(temp->Life != NULL) temp = temp->Life; else temp->Life = new Node(word,refer); // cout << temp->word<<"\n"; //bts = temp; return; } else if(strcmp(temp->word,word)==1) { if(temp->Right != NULL) temp = temp->Right; else temp->Right = new Node(word,refer); // cout << temp->word<<"\n"; // bts = temp; return; } } }
///////////////////////////////////////////////////////////////// /*bool addNode(char* word,char* refer,Node** temp) {
if(temp!=NULL) { if(strcmp((*temp)->word,word)<0) addNode(word,refer,&((*temp)->Life)); else if(strcmp((*temp)->word,word)>0) addNode(word,refer,&((*temp)->Right)); else cout<<"word decare "<<endl; } else { *temp = new Node(word,refer); return true; // bts = temp; } return true; } */ int main () {
ifstream write("dictionary.txt"); char word[WORD]; char refer[REFER]; char* word1; char* refer1; int n=1; Node* bts; bts = NULL; while(1) { write.getline(word,WORD); if(strlen(word)==0)break; word1 = new char[strlen(word)+1]; strcpy(word1,word); /////////////WORD/////////////////// write.getline(refer,REFER); refer1 = new char[strlen(refer)+1]; strcpy(refer1,refer); /////////////REFER/////////////////// write.getline(refer,REFER); /////////////BLANK/////////////////// addNode(word1,refer1,bts); //addNode(word1,refer1,bts); /*if(bts == NULL) bts = new Node(word1,refer1); else if((int)bts->word > (int)word1) { if(bts->Life == NULL) bts->Life = new Node(word1,refer1); else ..... } else if((int)bts->word < (int)word1) { bts->Right = new Node(word1,refer1); } else break; */ // cout << bts->word<<"\n"; // cout << bts->Life->word<<"\n"; n++; } cout << bts->word<<"\n"; cout << bts->Right->word<<"\n"; cout << bts->Life->word<<"\n"; //cout << bts->Right->Right->word<<"\n";
system ("pause"); return 0; }
|