解题思路:用结构体的办法创建一棵树,外加一个全局变量nodes,每新建一个子叶,nodes加一,最后就可以得出总的结点数了
注意事项:1.创建指针的时候要分配一个空间,不然程序会出错
2.输出总的节点数的时候要记得把根结点加进去
参考代码:
#include<vector> #include<string> #include<iostream> using namespace std; int nodes; struct tree{ vector<tree*>son;//用来存储子结点的指针 char name;//该结点存储的字母 tree(char a){//构造函数,每创建一个新的子叶,就把对应的字母存入 name=a; } tree* addson(char t){//向该结点的儿子放入字母 tree *temp; for(vector<tree*>::iterator iter=son.begin();iter!=son.end();iter++){//用迭代器搜索原有的子结点中是否已经有该字母 temp=*iter; if(temp->name==t)return temp;//在子结点中找到该字母,把子结点地址返回 } temp=new tree(t);//没找到,新建一个子结点 son.push_back(temp); nodes++;//结点数加一 return temp;//依旧要返回子结点地址 } }; int main(){ string t; tree *root,*temp; root=new tree('.');//根结点要分配一个空间,因为写了构造函数,所以这里随便赋个值 while(cin>>t){ temp=root;//每次输入一个单词,都要从根结点开始 for(int i=0;i<t.length();i++){ temp=temp->addson(t[i]);//存入一个字母的同时,进入到存储该字母的结点的空间,直到整个单词全部存入 } } cout<<nodes+1;//把根结点算进来 return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:724 |
DNA (C语言描述,蓝桥杯)浏览:1645 |
数字游戏 (C++代码)浏览:1230 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:583 |
分解质因数 (C++代码)浏览:1550 |
printf基础练习 (C语言代码)浏览:1978 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:413 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:392 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:517 |
C二级辅导-阶乘数列 (C语言代码)浏览:1828 |