设为首页 加入收藏

TOP

C语言用二叉树统计一个源文件(一)
2012-12-17 12:50:44 来源: 作者: 【 】 浏览:1346
Tags:语言 统计 一个 源文件

    由于出现的单词不确定,所以用二叉树实现:

    [cpp]

    //TreeNode.h

    typedef struct _TreeNode

    {

    int count; //出现的次数

    char* word;//单词本省

    struct _TreeNode* left;

    struct _TreeNode* right;

    }TreeNode;

    //给TreeNode分配内存

    TreeNode* talloc(void)

    {

    return (TreeNode*)malloc(sizeof(TreeNode));

    }

    //打印tree

    void tprint(TreeNode* root)

    {

    //打印left->self->right

    if(root!=NULL)

    {

    tprint(root->left);

    printf("%4d %s\n",root->count,root->word);

    tprint(root->right);

    }

    }

    //把单词添加节点的合适位置

    TreeNode* addNode(TreeNode* node,const char* word)

    {

    int con;

    TreeNode* tmp;

    if(node==NULL)

    {

    node = talloc();

    node->count=1;

    node->word=strdup(word);

    node->left=node->right=NULL;

    }else if((con=strcmp(word,node->word))<0)

    {

    tmp = addNode(node->left,word);

    node->left=tmp;

    }else if(con>0)

    {

    tmp = addNode(node->right,word);

    node->right=tmp;

    }else{

    node->count++;

    }

    return node;

    }

    /**

    从指定的流中读取单词

    */

    int getWord(char* ch,size_t n,FILE* f)

    {

    int c;

    char* p = ch;

    while(isspace(c=fgetc(f)))

    ;

    if(c!=EOF)

    *p++=c;

    if(!isalpha(c))

    {

    *p='\0';

    return c;

    }

    for(;--n>0;p++)

    {

    if(!isalpha(*p=fgetc(f)))

    {

    ungetc(*p,f);

    break;

    }

    }

    *p='\0';

    return c;

    }

   

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇c语言swap函数总结 下一篇C语言编程之结构体强制类型转换

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: