📄 wordtree.c
字号:
/*
*$Id: wordtree.c,v 1.1 2006/08/29 12:25:00 lijian Exp $
* Copyright (C)2001-2006 锐捷网络. All rights reserved
*/
/*
* wordtree.c
* Original Author: lijian@ruijie.com.cn, 2006-8-29
* 文件功能的简要说明
* 单词处理的二叉树处理相关函数
* 包括初始化,添加和打印三个函数
*
* Wordp v1.0
* $Log: wordtree.c,v $
* Revision 1.1 2006/08/29 12:25:00 lijian
* 单词处理所用二叉树相关函数文件由李剑第一次提交
*
*/
#include "wordp.h"
/*初始化二叉树,置根结点为NULL */
void tree_init(WORDP ** p, int num)
{
int i;
for (i = 0; i < num; i++)
*p++ = NULL;
}
/*将一个单词加入二叉树
* p 为指向要插入的二叉树的指针的指针
* w 为要插入的单词
*/
WORDP *addword(WORDP ** p, char *w)
{
int cond; /*条件比较临时变量 */
char *copyword(const char *s);
char *word_to_lower(char *s);
/*将单词*w 转换成全小写 */
word_to_lower(w);
if (*p == NULL) {
/*添加新结点 */
*p = (WORDP *) malloc(sizeof(WORDP));
(*p)->word = copyword(w);
(*p)->num = 1;
(*p)->left = (*p)->right = NULL;
} else if ((cond = strcmp(w, (*p)->word)) == 0)
(*p)->num++; /*重复的单词 */
else if (cond < 0)
addword(&(*p)->left, w); /*进入左子树 */
else
addword(&(*p)->right, w); /*进入右子树 */
return (*p);
}
/*将一个二叉树中的内容打印输出
* 在终端显示,同时存入输出文件
* p 为指向要打印的二叉树的指针
* fout 为输出文件
*/
void print_word(WORDP * p, FILE * fout)
{
if (p != NULL) {
/*中根优先序列打印 */
print_word(p->left, fout);
/*终端显示二叉树中内容 */
printf("%s , %d\n", p->word, p->num);
/*同时将结果写入文件 */
fprintf(fout, "%s , %d\n", p->word, p->num);
print_word(p->right, fout);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -