勤学思合作机构>

勤学思培训网RRHQXD

欢迎您!
朋友圈
机构未认证 全国统一学习专线 8:00-21:00

位置:勤学思培训网RRHQXD » 培训新闻 » 国际教育 » 出国留学 » 日本留学 » 总算清楚二叉树统计单词方法

总算清楚二叉树统计单词方法

发布时间:2022-12-22 17:46:58

因为预先不知道出现的单词列表,无法方便地排序并使用折半查找;也不能分别对输入中的每个单词都执行一次线性查找,所以考虑使用二叉树的数据结构来组织这些单词,接下来中山美联小编告诉你具体的二叉树统计单词方法,大家一起来看看吧!

二叉树统计单词方法1:

#include

#include

#include

#include

#define MAXWORD 100

typedef struct tnode_ {

char *word;

int count;

struct tnode_ *left;

struct tnode_ *right;

} tnode;

void print_tree(tnode *root);

tnode *add_tree(tnode *root, char *word);

void free_node(tnode *root);

char *copy_string(char *s) {

char *p = (char *)malloc(strlen(s)+1);

if(p != NULL) {

strcpy(p, s);

}

return p;

}

tnode *add_tree(tnode *p, char *word) {

int result;

if(p == NULL) {

p = (tnode *)malloc(sizeof(tnode));

p->word= copy_string(word); // Attention !

p->count = 1;

p->left = NULL;

p->right = NULL;

}

else {

result = strcmp(word, p->word);

if(result < 0) {

p->left = add_tree(p->left, word);

}

else if(result > 0) {

p->right = add_tree(p->right, word);

}

else {

p->count++;

}

}

return p;

}

void print_tree(tnode *p) {

if(p) {

print_tree(p->left);

printf("%st : %4dn", p->word, p->count);

print_tree(p->right);

}

}

void free_node(tnode *p) {

if(p) {

free_node(p->left);

free_node(p->right);

free(p->word);

free(p);

}

}

int getword(char *word, int n) {

int c;

char *w = word;

while(isspace(c = getchar())) {

;

}

if(c != EOF) {

*w++ = c;

}

if(!isalpha(c)) {

*w = '';

return c;

}

while(n > 0) {

c = getchar();

if(isalnum(c)) {

*w++ = c;

}

else {

break;

}

n--;

}

*w = '';

return w[0];

}

int main() {

tnode *root = NULL; // 指针一定要初始化为NULL

char word[MAXWORD];

while((getword(word, MAXWORD)) != EOF) {

if(isalnum(word[0])) {

root = add_tree(root, word);

}

}

print_tree(root);

free_node(root);

return 0;

}

[图片0]

更多培训课程,学习资讯,课程优惠,课程开班,学校地址等学校信息,请进入 勤学思培训网RRHQXD 详细了解
咨询电话:

还没有找到合适的课程?赶快告诉课程顾问,让我们顾问马上联系您! 靠谱 的培训课程,省时又省力!

微信访问

#tel_020#