Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c+中的二叉树+;用于添加字频为的字符串 我学习C++,我被指派为一个项目,用来生成一个给定字符串的树(例如“hello World Hello World World”),它必须为字符串中的每个不同单词创建一个节点,并且节点的一部分必须包含一个保存单词的空间,另一个节点保存一个出现频率(例如hello 2,一个1,世界2),但是,当我使用meter()函数单独放置单词时,没有问题,但问题是当我试图获取整个字符串的单词时,出于某种奇怪的原因,只是在树中添加字符串的最后一个单词,频率为字符串中的单词数。我已经尝试了不同的方法将字符串拆分为单词,以将它们添加到树中,但所有这些方法都会得到相同的结果 #include <iostream> #include <conio.h> #include <cstring> #include <sstream> using namespace std; typedef char* tipo; typedef int tipo1; class Nodo{ tipo1 f; tipo dato; Nodo *izq; Nodo *der; friend class Arbol; }; typedef Nodo* pNodo; class Arbol{ pNodo raiz; public: Arbol(); pNodo getRaiz(); tipo getDato(); void insertarNodo(tipo x, pNodo &p); void meter(tipo x); void eliminaNodo(tipo x, pNodo &p); void eliminar(tipo x); void inOrden(pNodo p); tipo1 pertenece(tipo x, pNodo p); tipo menor(pNodo p); tipo1 pertenece1(tipo x); int estaVacia(); void arbolito(tipo x); }; Arbol::Arbol(){ raiz=NULL; } pNodo Arbol:: getRaiz(){ return raiz; } int Arbol:: estaVacia(){ return raiz==NULL; } void Arbol::insertarNodo(tipo x, pNodo &p){ if (p==NULL){ p=new Nodo(); p->f=1; p->dato=x; p->izq=NULL; p->der=NULL; } else if(strcmp(x, p -> dato)<0){ insertarNodo(x, p->izq); } else if(strcmp(x, p -> dato)>0){ insertarNodo(x,p->der); } else if(strcmp(x, p -> dato)==0){ p -> f ++; } } void Arbol:: meter(tipo x){ insertarNodo(x,raiz); } tipo Arbol:: menor(pNodo p){ if (estaVacia()){ return "Error: Arbol vacio"; }else{ if (p->izq==NULL){ return p->dato; }else{ return menor(p->izq); } } } void Arbol:: eliminaNodo(tipo x, pNodo &p){ if (p!=NULL){ if (strcmp(x, p -> dato)==0){ (p->f)--; if (p->izq==NULL && p->f==0){ pNodo q=p; p=p->der; delete q; }else if(p->der==NULL && p->f==0){ pNodo q=p; p=p->izq; delete q; }else if(p->izq!=NULL && p->der!=NULL & p->f==0){ tipo m=menor(p->der); p->dato=m; eliminaNodo(m,p->der); } }else if (strcmp(x, p -> dato)<0){ eliminaNodo(x,p->izq); }else{ eliminaNodo(x, p->der); } }else{ cout<<"No se encontro el dato"; } } void Arbol:: eliminar(tipo x){ eliminaNodo(x, raiz); } void Arbol:: inOrden(pNodo p){ if (p!=NULL){ inOrden(p->izq); cout<<p->dato<<"="<<p->f<<endl; inOrden(p->der); } } tipo1 Arbol:: pertenece(tipo x, pNodo p){ if (p==NULL){ return 0; } if (p->dato==x){ return p->f; }else if(strcmp(x, p -> dato)<0){ return pertenece(x, p->izq); }else if(strcmp(x, p -> dato)>0){ return pertenece(x,p->der); } } tipo1 Arbol:: pertenece1(tipo x){ return pertenece(x,raiz); } int main() { Arbol tree; tipo a,b; string x; string s="hjk This is"; s=s+" "; int i=0; a=strchr(s.c_str(),' '); while (s[i]!=' ' && i<s.size()){ x=x+s[i]; i++; if (i==a-s.c_str()){ strcpy(b, x.c_str()); cout <<x.c_str()<<endl; tree.meter(b); i++; a=strchr(a+1,' '); x=""; } } tree.inOrden(tree.getRaiz()); getch(); return 0; } #包括 #包括 #包括 #包括 使用名称空间std; typedef char*tipo; typedef int tipo1; 野藤班{ tipo1f; 提波达托; Nodo*izq; 诺德; 朋友级炭; }; 类型def Nodo*pNodo; 甲酚{ 普诺多·莱兹; 公众: Arbol(); pNodo getRaiz(); tipo getDato(); void insertarNodo(tipo x、pNodo&p); 空隙率计(tipo x); 无效eliminaNodo(tipo x、pNodo&p); 无效终止(tipo x); 无效索引(pNodo p); tipo1相关性(tipo x,pNodo p); 蒂波·梅诺(pNodo p); tipo1 pertence1(tipox); int estaVacia(); 孔隙碳酸盐岩(tipo x); }; Arbol::Arbol(){ raiz=NULL; } pNodo-Arbol::getRaiz(){ 返回raiz; } int Arbol::estaVacia(){ 返回raiz==NULL; } 无效碳::插入式碳纳米管(tipo x,pNodo&p){ if(p==NULL){ p=新节点(); p->f=1; p->dato=x; p->izq=NULL; p->der=NULL; } 否则如果(strcmp(x,p->dato)izq); } 否则如果(strcmp(x,p->dato)>0){ 插入命令(x,p->der); } 否则如果(strcmp(x,p->dato)==0){ p->f++; } } 空隙碳::米(tipo x){ insertarNodo(x,raiz); } tipo Arbol::menor(pNodo p){ if(estaVacia()){ 返回“错误:Arbol vacio”; }否则{ 如果(p->izq==NULL){ 返回p->dato; }否则{ 返回菜单(p->izq); } } } 无效碳::eliminaNodo(tipo x,pNodo&p){ 如果(p!=NULL){ 如果(strcmp(x,p->dato)==0){ (p->f)--; 如果(p->izq==NULL&&p->f==0){ pNodo q=p; p=p->der; 删除q; }否则如果(p->der==NULL&&p->f==0){ pNodo q=p; p=p->izq; 删除q; }否则如果(p->izq!=NULL&&p->der!=NULL&p->f==0){ tipo m=menor(p->der); p->dato=m; 伊莱米纳诺多(m,p->der); } }否则如果(strcmp(x,p->dato)izq); }否则{ eliminaNodo(x,p->der); } }否则{ 库尔德); } } tipo1羰基::pertence1(tipo x){ 返回概率(x,raiz); } int main() { 虫媒树; (一,二); 字符串x; string s=“hjk This is”; s=s+“”; int i=0; a=strchr(s.c_str(),“”); 虽然(s[i]!=''&&i_C++_String_Binary Search Tree - Fatal编程技术网 f=1; p->dato=x; p->izq=NULL; p->der=NULL; } 否则如果(strcmp(x,p->dato)izq); } 否则如果(strcmp(x,p->dato)>0){ 插入命令(x,p->der); } 否则如果(strcmp(x,p->dato)==0){ p->f++; } } 空隙碳::米(tipo x){ insertarNodo(x,raiz); } tipo Arbol::menor(pNodo p){ if(estaVacia()){ 返回“错误:Arbol vacio”; }否则{ 如果(p->izq==NULL){ 返回p->dato; }否则{ 返回菜单(p->izq); } } } 无效碳::eliminaNodo(tipo x,pNodo&p){ 如果(p!=NULL){ 如果(strcmp(x,p->dato)==0){ (p->f)--; 如果(p->izq==NULL&&p->f==0){ pNodo q=p; p=p->der; 删除q; }否则如果(p->der==NULL&&p->f==0){ pNodo q=p; p=p->izq; 删除q; }否则如果(p->izq!=NULL&&p->der!=NULL&p->f==0){ tipo m=menor(p->der); p->dato=m; 伊莱米纳诺多(m,p->der); } }否则如果(strcmp(x,p->dato)izq); }否则{ eliminaNodo(x,p->der); } }否则{ 库尔德); } } tipo1羰基::pertence1(tipo x){ 返回概率(x,raiz); } int main() { 虫媒树; (一,二); 字符串x; string s=“hjk This is”; s=s+“”; int i=0; a=strchr(s.c_str(),“”); 虽然(s[i]!=''&&i,c++,string,binary-search-tree,C++,String,Binary Search Tree" /> f=1; p->dato=x; p->izq=NULL; p->der=NULL; } 否则如果(strcmp(x,p->dato)izq); } 否则如果(strcmp(x,p->dato)>0){ 插入命令(x,p->der); } 否则如果(strcmp(x,p->dato)==0){ p->f++; } } 空隙碳::米(tipo x){ insertarNodo(x,raiz); } tipo Arbol::menor(pNodo p){ if(estaVacia()){ 返回“错误:Arbol vacio”; }否则{ 如果(p->izq==NULL){ 返回p->dato; }否则{ 返回菜单(p->izq); } } } 无效碳::eliminaNodo(tipo x,pNodo&p){ 如果(p!=NULL){ 如果(strcmp(x,p->dato)==0){ (p->f)--; 如果(p->izq==NULL&&p->f==0){ pNodo q=p; p=p->der; 删除q; }否则如果(p->der==NULL&&p->f==0){ pNodo q=p; p=p->izq; 删除q; }否则如果(p->izq!=NULL&&p->der!=NULL&p->f==0){ tipo m=menor(p->der); p->dato=m; 伊莱米纳诺多(m,p->der); } }否则如果(strcmp(x,p->dato)izq); }否则{ eliminaNodo(x,p->der); } }否则{ 库尔德); } } tipo1羰基::pertence1(tipo x){ 返回概率(x,raiz); } int main() { 虫媒树; (一,二); 字符串x; string s=“hjk This is”; s=s+“”; int i=0; a=strchr(s.c_str(),“”); 虽然(s[i]!=''&&i,c++,string,binary-search-tree,C++,String,Binary Search Tree" />

c+中的二叉树+;用于添加字频为的字符串 我学习C++,我被指派为一个项目,用来生成一个给定字符串的树(例如“hello World Hello World World”),它必须为字符串中的每个不同单词创建一个节点,并且节点的一部分必须包含一个保存单词的空间,另一个节点保存一个出现频率(例如hello 2,一个1,世界2),但是,当我使用meter()函数单独放置单词时,没有问题,但问题是当我试图获取整个字符串的单词时,出于某种奇怪的原因,只是在树中添加字符串的最后一个单词,频率为字符串中的单词数。我已经尝试了不同的方法将字符串拆分为单词,以将它们添加到树中,但所有这些方法都会得到相同的结果 #include <iostream> #include <conio.h> #include <cstring> #include <sstream> using namespace std; typedef char* tipo; typedef int tipo1; class Nodo{ tipo1 f; tipo dato; Nodo *izq; Nodo *der; friend class Arbol; }; typedef Nodo* pNodo; class Arbol{ pNodo raiz; public: Arbol(); pNodo getRaiz(); tipo getDato(); void insertarNodo(tipo x, pNodo &p); void meter(tipo x); void eliminaNodo(tipo x, pNodo &p); void eliminar(tipo x); void inOrden(pNodo p); tipo1 pertenece(tipo x, pNodo p); tipo menor(pNodo p); tipo1 pertenece1(tipo x); int estaVacia(); void arbolito(tipo x); }; Arbol::Arbol(){ raiz=NULL; } pNodo Arbol:: getRaiz(){ return raiz; } int Arbol:: estaVacia(){ return raiz==NULL; } void Arbol::insertarNodo(tipo x, pNodo &p){ if (p==NULL){ p=new Nodo(); p->f=1; p->dato=x; p->izq=NULL; p->der=NULL; } else if(strcmp(x, p -> dato)<0){ insertarNodo(x, p->izq); } else if(strcmp(x, p -> dato)>0){ insertarNodo(x,p->der); } else if(strcmp(x, p -> dato)==0){ p -> f ++; } } void Arbol:: meter(tipo x){ insertarNodo(x,raiz); } tipo Arbol:: menor(pNodo p){ if (estaVacia()){ return "Error: Arbol vacio"; }else{ if (p->izq==NULL){ return p->dato; }else{ return menor(p->izq); } } } void Arbol:: eliminaNodo(tipo x, pNodo &p){ if (p!=NULL){ if (strcmp(x, p -> dato)==0){ (p->f)--; if (p->izq==NULL && p->f==0){ pNodo q=p; p=p->der; delete q; }else if(p->der==NULL && p->f==0){ pNodo q=p; p=p->izq; delete q; }else if(p->izq!=NULL && p->der!=NULL & p->f==0){ tipo m=menor(p->der); p->dato=m; eliminaNodo(m,p->der); } }else if (strcmp(x, p -> dato)<0){ eliminaNodo(x,p->izq); }else{ eliminaNodo(x, p->der); } }else{ cout<<"No se encontro el dato"; } } void Arbol:: eliminar(tipo x){ eliminaNodo(x, raiz); } void Arbol:: inOrden(pNodo p){ if (p!=NULL){ inOrden(p->izq); cout<<p->dato<<"="<<p->f<<endl; inOrden(p->der); } } tipo1 Arbol:: pertenece(tipo x, pNodo p){ if (p==NULL){ return 0; } if (p->dato==x){ return p->f; }else if(strcmp(x, p -> dato)<0){ return pertenece(x, p->izq); }else if(strcmp(x, p -> dato)>0){ return pertenece(x,p->der); } } tipo1 Arbol:: pertenece1(tipo x){ return pertenece(x,raiz); } int main() { Arbol tree; tipo a,b; string x; string s="hjk This is"; s=s+" "; int i=0; a=strchr(s.c_str(),' '); while (s[i]!=' ' && i<s.size()){ x=x+s[i]; i++; if (i==a-s.c_str()){ strcpy(b, x.c_str()); cout <<x.c_str()<<endl; tree.meter(b); i++; a=strchr(a+1,' '); x=""; } } tree.inOrden(tree.getRaiz()); getch(); return 0; } #包括 #包括 #包括 #包括 使用名称空间std; typedef char*tipo; typedef int tipo1; 野藤班{ tipo1f; 提波达托; Nodo*izq; 诺德; 朋友级炭; }; 类型def Nodo*pNodo; 甲酚{ 普诺多·莱兹; 公众: Arbol(); pNodo getRaiz(); tipo getDato(); void insertarNodo(tipo x、pNodo&p); 空隙率计(tipo x); 无效eliminaNodo(tipo x、pNodo&p); 无效终止(tipo x); 无效索引(pNodo p); tipo1相关性(tipo x,pNodo p); 蒂波·梅诺(pNodo p); tipo1 pertence1(tipox); int estaVacia(); 孔隙碳酸盐岩(tipo x); }; Arbol::Arbol(){ raiz=NULL; } pNodo-Arbol::getRaiz(){ 返回raiz; } int Arbol::estaVacia(){ 返回raiz==NULL; } 无效碳::插入式碳纳米管(tipo x,pNodo&p){ if(p==NULL){ p=新节点(); p->f=1; p->dato=x; p->izq=NULL; p->der=NULL; } 否则如果(strcmp(x,p->dato)izq); } 否则如果(strcmp(x,p->dato)>0){ 插入命令(x,p->der); } 否则如果(strcmp(x,p->dato)==0){ p->f++; } } 空隙碳::米(tipo x){ insertarNodo(x,raiz); } tipo Arbol::menor(pNodo p){ if(estaVacia()){ 返回“错误:Arbol vacio”; }否则{ 如果(p->izq==NULL){ 返回p->dato; }否则{ 返回菜单(p->izq); } } } 无效碳::eliminaNodo(tipo x,pNodo&p){ 如果(p!=NULL){ 如果(strcmp(x,p->dato)==0){ (p->f)--; 如果(p->izq==NULL&&p->f==0){ pNodo q=p; p=p->der; 删除q; }否则如果(p->der==NULL&&p->f==0){ pNodo q=p; p=p->izq; 删除q; }否则如果(p->izq!=NULL&&p->der!=NULL&p->f==0){ tipo m=menor(p->der); p->dato=m; 伊莱米纳诺多(m,p->der); } }否则如果(strcmp(x,p->dato)izq); }否则{ eliminaNodo(x,p->der); } }否则{ 库尔德); } } tipo1羰基::pertence1(tipo x){ 返回概率(x,raiz); } int main() { 虫媒树; (一,二); 字符串x; string s=“hjk This is”; s=s+“”; int i=0; a=strchr(s.c_str(),“”); 虽然(s[i]!=''&&i

c+中的二叉树+;用于添加字频为的字符串 我学习C++,我被指派为一个项目,用来生成一个给定字符串的树(例如“hello World Hello World World”),它必须为字符串中的每个不同单词创建一个节点,并且节点的一部分必须包含一个保存单词的空间,另一个节点保存一个出现频率(例如hello 2,一个1,世界2),但是,当我使用meter()函数单独放置单词时,没有问题,但问题是当我试图获取整个字符串的单词时,出于某种奇怪的原因,只是在树中添加字符串的最后一个单词,频率为字符串中的单词数。我已经尝试了不同的方法将字符串拆分为单词,以将它们添加到树中,但所有这些方法都会得到相同的结果 #include <iostream> #include <conio.h> #include <cstring> #include <sstream> using namespace std; typedef char* tipo; typedef int tipo1; class Nodo{ tipo1 f; tipo dato; Nodo *izq; Nodo *der; friend class Arbol; }; typedef Nodo* pNodo; class Arbol{ pNodo raiz; public: Arbol(); pNodo getRaiz(); tipo getDato(); void insertarNodo(tipo x, pNodo &p); void meter(tipo x); void eliminaNodo(tipo x, pNodo &p); void eliminar(tipo x); void inOrden(pNodo p); tipo1 pertenece(tipo x, pNodo p); tipo menor(pNodo p); tipo1 pertenece1(tipo x); int estaVacia(); void arbolito(tipo x); }; Arbol::Arbol(){ raiz=NULL; } pNodo Arbol:: getRaiz(){ return raiz; } int Arbol:: estaVacia(){ return raiz==NULL; } void Arbol::insertarNodo(tipo x, pNodo &p){ if (p==NULL){ p=new Nodo(); p->f=1; p->dato=x; p->izq=NULL; p->der=NULL; } else if(strcmp(x, p -> dato)<0){ insertarNodo(x, p->izq); } else if(strcmp(x, p -> dato)>0){ insertarNodo(x,p->der); } else if(strcmp(x, p -> dato)==0){ p -> f ++; } } void Arbol:: meter(tipo x){ insertarNodo(x,raiz); } tipo Arbol:: menor(pNodo p){ if (estaVacia()){ return "Error: Arbol vacio"; }else{ if (p->izq==NULL){ return p->dato; }else{ return menor(p->izq); } } } void Arbol:: eliminaNodo(tipo x, pNodo &p){ if (p!=NULL){ if (strcmp(x, p -> dato)==0){ (p->f)--; if (p->izq==NULL && p->f==0){ pNodo q=p; p=p->der; delete q; }else if(p->der==NULL && p->f==0){ pNodo q=p; p=p->izq; delete q; }else if(p->izq!=NULL && p->der!=NULL & p->f==0){ tipo m=menor(p->der); p->dato=m; eliminaNodo(m,p->der); } }else if (strcmp(x, p -> dato)<0){ eliminaNodo(x,p->izq); }else{ eliminaNodo(x, p->der); } }else{ cout<<"No se encontro el dato"; } } void Arbol:: eliminar(tipo x){ eliminaNodo(x, raiz); } void Arbol:: inOrden(pNodo p){ if (p!=NULL){ inOrden(p->izq); cout<<p->dato<<"="<<p->f<<endl; inOrden(p->der); } } tipo1 Arbol:: pertenece(tipo x, pNodo p){ if (p==NULL){ return 0; } if (p->dato==x){ return p->f; }else if(strcmp(x, p -> dato)<0){ return pertenece(x, p->izq); }else if(strcmp(x, p -> dato)>0){ return pertenece(x,p->der); } } tipo1 Arbol:: pertenece1(tipo x){ return pertenece(x,raiz); } int main() { Arbol tree; tipo a,b; string x; string s="hjk This is"; s=s+" "; int i=0; a=strchr(s.c_str(),' '); while (s[i]!=' ' && i<s.size()){ x=x+s[i]; i++; if (i==a-s.c_str()){ strcpy(b, x.c_str()); cout <<x.c_str()<<endl; tree.meter(b); i++; a=strchr(a+1,' '); x=""; } } tree.inOrden(tree.getRaiz()); getch(); return 0; } #包括 #包括 #包括 #包括 使用名称空间std; typedef char*tipo; typedef int tipo1; 野藤班{ tipo1f; 提波达托; Nodo*izq; 诺德; 朋友级炭; }; 类型def Nodo*pNodo; 甲酚{ 普诺多·莱兹; 公众: Arbol(); pNodo getRaiz(); tipo getDato(); void insertarNodo(tipo x、pNodo&p); 空隙率计(tipo x); 无效eliminaNodo(tipo x、pNodo&p); 无效终止(tipo x); 无效索引(pNodo p); tipo1相关性(tipo x,pNodo p); 蒂波·梅诺(pNodo p); tipo1 pertence1(tipox); int estaVacia(); 孔隙碳酸盐岩(tipo x); }; Arbol::Arbol(){ raiz=NULL; } pNodo-Arbol::getRaiz(){ 返回raiz; } int Arbol::estaVacia(){ 返回raiz==NULL; } 无效碳::插入式碳纳米管(tipo x,pNodo&p){ if(p==NULL){ p=新节点(); p->f=1; p->dato=x; p->izq=NULL; p->der=NULL; } 否则如果(strcmp(x,p->dato)izq); } 否则如果(strcmp(x,p->dato)>0){ 插入命令(x,p->der); } 否则如果(strcmp(x,p->dato)==0){ p->f++; } } 空隙碳::米(tipo x){ insertarNodo(x,raiz); } tipo Arbol::menor(pNodo p){ if(estaVacia()){ 返回“错误:Arbol vacio”; }否则{ 如果(p->izq==NULL){ 返回p->dato; }否则{ 返回菜单(p->izq); } } } 无效碳::eliminaNodo(tipo x,pNodo&p){ 如果(p!=NULL){ 如果(strcmp(x,p->dato)==0){ (p->f)--; 如果(p->izq==NULL&&p->f==0){ pNodo q=p; p=p->der; 删除q; }否则如果(p->der==NULL&&p->f==0){ pNodo q=p; p=p->izq; 删除q; }否则如果(p->izq!=NULL&&p->der!=NULL&p->f==0){ tipo m=menor(p->der); p->dato=m; 伊莱米纳诺多(m,p->der); } }否则如果(strcmp(x,p->dato)izq); }否则{ eliminaNodo(x,p->der); } }否则{ 库尔德); } } tipo1羰基::pertence1(tipo x){ 返回概率(x,raiz); } int main() { 虫媒树; (一,二); 字符串x; string s=“hjk This is”; s=s+“”; int i=0; a=strchr(s.c_str(),“”); 虽然(s[i]!=''&&i,c++,string,binary-search-tree,C++,String,Binary Search Tree,我认为您的问题是因为您使用的是char*,而不是字符串 在数据结构中插入节点时,只保留指向字符串的指针的副本,而不获取字符串的副本 当代码解析句子中的下一个单词时,您将新词指定给指针b。然后,您的所有节点现在都指向同一个单词-处理完句子后,该单词将始终是最后一个 将您的代码更改为使用strcpy获取单词的副本并将其存储在节点中,而不仅仅是指针的副本。(不要忘记为副本分配内存,这也是更改为使用string而不是char*的另一个原因,所有内存管理都由您处理。)使用std::string。查看它的所

我认为您的问题是因为您使用的是
char*
,而不是字符串

在数据结构中插入节点时,只保留指向字符串的指针的副本,而不获取字符串的副本

当代码解析句子中的下一个单词时,您将新词指定给指针
b
。然后,您的所有节点现在都指向同一个单词-处理完句子后,该单词将始终是最后一个


将您的代码更改为使用
strcpy
获取单词的副本并将其存储在节点中,而不仅仅是指针的副本。(不要忘记为副本分配内存,这也是更改为使用
string
而不是
char*
的另一个原因,所有内存管理都由您处理。)

使用std::string。查看它的所有成员,尤其是
find_first
substr
。对于C样式的字符串,请查看函数
strchr
strstr
。问题是没有得到单词,(我已经拆分了字符串并得到了单词),问题是当我使用meter()时函数,因为该函数单独读取所有单词,但在我使用inOrden()函数打印时只返回最后一个单词。但是感谢您的帮助。我可以问一下为什么需要树结构来完成此操作?一个简单的列表(或链表)对单词的排序就足够了。还是因为你需要学习二进制搜索?这是我的数据结构类的一个项目,我们正在学习二进制搜索。是的,为这个特定的问题建立一个列表会更容易。现在你说了。这真的是个问题,我要尝试解决它,谢谢。@JorgeRamos@-我怎么强调都不过分,你应该把
char*
改成
string
。你把你的问题标记为
C++
,所以没有理由不使用可用的库来简化事情。如果你想坚持使用
char*
,那么就不要使用
typedef
;在学习编码时,它可以在你需要的时候屏蔽复制而不是赋值,如本例所示。祝你好运!如果你需要复制字符串,
strdup
是你的朋友。语言的最终选择是你自己,但我的建议是坚持使用C字符串作为练习。当然,std::strings更容易使用,但你可能会从抓握中学到一些有价值的东西与幕后发生的事情有关。