解题思路:用结构体的办法创建一棵树,外加一个全局变量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语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:783 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:821 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:582 |
矩阵加法 (C语言代码)浏览:1768 |
出圈】指针malloc版浏览:377 |
程序员的表白 (C语言代码)浏览:678 |
钟神赛车 (C语言代码)浏览:665 |
小O的图案 (C语言代码)浏览:979 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:826 |