| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:纪念下第一个2叉排序In Reply To:纪念下第一个2叉排序 Posted by:sinper at 2007-12-12 11:02:30 > #include <stdio.h>
> #include <string.h>
> #include <malloc.h>
>
> typedef struct _node
> {
> char str[31];
> int count;
> struct _node *left;
> struct _node *right;
> }node, *node_ptr;
>
> double k = 0.0;
> node_ptr root = NULL;
>
> void InsertTree(node_ptr z)
> {
> node_ptr y = NULL;
> node_ptr x = root;
> int n;
>
> while (x != NULL)
> {
> y = x;
>
> n = strcmp(z->str, x->str);
> if (n == 0)
> {
> break;
> }
> else
> if (n < 0)
> {
> x = x->left;
> }
> else
> {
> x = x->right;
> }
> }
>
> if (y == NULL)
> {
> root = z;
> }
> else
> {
> if (x != NULL && strcmp(x->str, y->str) == 0)
> {
> x->count++;
> free(z);
> z = NULL;
> }
> else
> if (strcmp(z->str, y->str) < 0)
> {
> y->left = z;
> }
> else
> {
> y->right = z;
> }
> }
> }
>
> void PrintTree(node_ptr root)
> {
> if (root != NULL)
> {
> PrintTree(root->left);
> printf("%s %.4f\n", root->str, root->count*100/k);
> PrintTree(root->right);
> }
> }
>
> int main()
> {
> char str[31];
>
> while (gets(str) != NULL)
> {
> k++;
> node_ptr z = (node_ptr)malloc(sizeof(node));
> z->count = 1;
> strcpy(z->str, str);
> z->right = NULL;
> z->left = NULL;
>
> InsertTree(z);
> }
>
> PrintTree(root);
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator