http://poj.org/problem?id=2418
View Code
#include<stdio.h> #include<malloc.h> #include<string.h> char s[31] ; int sum = 0 ; struct BiTree { int num ; char species[31] ; BiTree *l, *r ; } ; BiTree *t ; BiTree *creat() { BiTree *p ; p = (struct BiTree*)malloc(sizeof(struct BiTree)) ; p->l = NULL ; p->r = NULL ; p->num = 1 ; return p ; } void insert(char *s, BiTree *t) { if(strcmp(s, t->species)==0) { t->num++ ; return ; } else if(strcmp(s, t->species)<0) { if(t->l==NULL) { t->l = creat() ; strcpy(t->l->species, s) ; } else insert(s, t->l) ; } else { if(t->r==NULL) { t->r = creat() ; strcpy(t->r->species, s) ; return ; } else insert(s, t->r) ; } } void inorder(BiTree *t) { if(t!=NULL) { inorder(t->l) ; printf("%s %.4f\n", t->species, (t->num)*100.0/sum) ; inorder(t->r) ; return ; } } int main() { //freopen("a.txt","r",stdin) ; char s[31] ; sum = 1 ; gets(s) ; t = creat() ; strcpy(t->species, s) ; while(gets(s)!=NULL) { sum++ ; insert(s, t) ; } inorder(t) ; return 0 ; }
题目大意:给一个字符文本,每行一个字符串,统计不同的字符串出现的百分比。最后按ASCII排序输出不同字符串和出现的百分比。
数据结构中的各种树
http://blog.csdn.net/liuzhanchen1987/article/details/7324935