28
394
1179
助理工程师
使用特权
void insert(BSTNode *&root,ElemType key) //注意这里为什么用指针的引用 { if(root==NULL) //如果该树为空 { root=(BSTNode *)malloc(sizeof(BSTNode)); root->key=key; root->left=NULL; root->right=NULL; } else { if(root->key==key) return; else if(root->key>key) //key小于根结点的权值 { if(root->left==NULL) //root的左孩子为空,则创建一个结点作为root的左孩子 { BSTNode *p=(BSTNode *)malloc(sizeof(BSTNode)); p->key=key; p->left=NULL; p->right=NULL; root->left=p; } else insert(root->left,key); //递归插入到左子树中 } else //key大于根结点的权值 { if(root->right==NULL) //root的右孩子为空,则创建一个结点作为root的右孩子 { BSTNode *p=(BSTNode *)malloc(sizeof(BSTNode)); p->key=key; p->left=NULL; p->right=NULL; root->right=p; } else insert(root->right,key); //递归插入到右子树中 } } }
void insert(BSTNode *&root,ElemType key) //非递归实现 { if(root==NULL) { root=(BSTNode *)malloc(sizeof(BSTNode)); root->key=key; root->left=NULL; root->right=NULL; return; } BSTNode *p1,*p2; int flag; p1=root; while(p1!=NULL) { p2=p1; if(key==p1->key) return; else if(key<p1->key) { p1=p1->left; flag=0; } else { p1=p1->right; flag=1; } } BSTNode *p=(BSTNode *)malloc(sizeof(BSTNode)); p->key=key; p->left=NULL; p->right=NULL; if(flag==0) p2->left=p; else p2->right=p; }
BSTNode* search(BSTNode *root,ElemType key) { if(root==NULL||root->key==key) return root; else if(key<root->key) search(root->left,key); else search(root->right,key); } BSTNode* search(BSTNode *root,ElemType key) { if(root==NULL||root->key==key) return root; BSTNode *p=root; while(p!=NULL&&key!=p->key) { if(key<p->key) p=p->left; else p=p->right; } return p; }
#include<iostream> #include<string> #include<map> #include<algorithm> using namespace std; int main(void) { int i; int n=0; map<string,int> tree; map<string,int>::iterator it; char str[31]; while(gets(str)) { string name; for(i=0;str[i]!='\0';i++) { name+=str[i]; } tree[name]++; //map<string,int>若没有赋初值,则value值默认为0 n++; } for(it=tree.begin();it!=tree.end();it++) { cout<<it->first; printf(" %.4lf\n",100*(double)(it->second)/n); } return 0; }
发表回复 本版积分规则 回帖后跳转到最后一页
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号