資料結構實驗之查詢三:樹的種類統計(SDUT 3375)
阿新 • • 發佈:2018-12-16
C:
#include <stdio.h> #include <stdlib.h> #include <string.h> struct node { char data[30]; struct node *lc; struct node *rc; int num; }; char a[30]; int n; struct node *creat(struct node *root) { if(root == NULL) { root = (struct node *)malloc(sizeof(struct node)); root->lc = NULL; root->rc = NULL; root->num = 1; strcpy(root->data, a); } else { if(strcmp(a, root->data) == 0) { root->num++; } else if(strcmp(a, root->data) < 0) { root->lc = creat(root->lc); } else { root->rc = creat(root->rc); } } return root; }; void fin(struct node *root) { if(root != NULL) { fin(root->lc); printf("%s %.2lf%%\n", root->data, 1.0 * root->num * 100 / n); fin(root->rc); } } int main() { int i, j; int len; struct node *root; scanf("%d ", &n); root = NULL; for(i = 0; i < n; i++) { gets(a); len = strlen(a); for(j = 0; j < len; j++) { if(a[j] >= 'A' && a[j] <= 'Z') { a[j] = a[j] + 32; } } root = creat(root); } fin(root); return 0; }