[求助]生成一棵二叉树问题

yes152 2007-08-22 10:49:25
大家帮我看看,程序那错了呢?怎么不能动态输入呢?编译通过了,可是,当我输入一个单词之后,回车,再输入单词,狂吃我内存呢?好郁闷呀!我用的VC++6.0
//生成一棵二叉树,比较单词出现的次数
//c++ java Fortran basic Foxbase
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXWORD 20
struct tnode{
char *word; //指向一个单词
int count; //访问次数
struct tnode *left; //左孩子
struct tnode *right; //右孩子
};
char *GetWord() //读取单词
{
char *p;
if((p=(char*)malloc(MAXWORD+1))==NULL) {printf("Out of memory!\n");return(NULL);}
scanf("%MAXWORDs",p);
if(strlen(p)==0) return(NULL);
return p;
}
struct tnode *tree(struct tnode *p,char *w) //生成树
{
struct tnode *talloc();
int cond;
if(p==NULL)
{
p=talloc();
p->word=w;
p->count=1;
p->left=p->right=NULL;
}
else if((cond=strcmp(w,p->word))==0)
p->count++;
else if(cond<0)
p->left=tree(p->left,w);
else
p->right=tree(p->right,w);
return(p);
}
void treeprint(struct tnode *point) //打印树
{
if(point!=NULL)
{
treeprint(point->left);
printf("%4d%s\n",point->count,point->word);
treeprint(point->right);
}
}
struct tnode *talloc()
{
return((struct tnode*)malloc(sizeof(struct tnode)));
}
int main()
{
struct tnode *root;
char *t=NULL;
root=NULL;
while((t=GetWord())!=NULL)
root=tree(root,t);
treeprint(root);
return 0;
}
...全文
141 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yes152 2007-08-24
  • 打赏
  • 举报
回复
MAXWORD去掉了
这次更糟糕了,又不能输入变成无限输入了,怎么输入也不出结果呢?
求助前辈帮我看看。
非完美主义者 2007-08-23
  • 打赏
  • 举报
回复
scanf("%MAXWORDs",p);这个有问题,格式字符串里,MAXWORD是不能展开为20的。
资源下载链接为: https://pan.quark.cn/s/2dfc9b0bbfb0 课程大纲共十二讲:第一讲是基本概念,包括数据结构、算法及最大子列和问题实例;第二讲线性结构,涉及线性表、堆栈、队列等及多项式加法实例,还有小白专场的多项式运算 C 实现;第三到五讲是树(上中下),涵盖树的表示、二叉树、二叉搜索树、堆、哈夫曼树等,附多个小白专场的 C 实现;第六到八讲是图(上中下),包括图的概念、遍历、最短路径、最小生成树等,有应用实例和小白专场;第九到十讲是排序(上下),涉及多种排序算法及比较;第十一讲散列查找,包括散列表、函数构造等及词频统计实例;第十二讲是综合习题选讲。 预备知识方面,需学过一门编程语言,懂 C 语言更易接受,学过离散数学有帮助但非必需。 证书要求:编程练习需在 PTA 获 200 分以上;总评成绩由期中(40%)和期末(60%)构成,若期末成绩高于期中则期末占 100%;总评 60 分以上可获合格证书。2016 年冬季或 2017 年春季 PAT 甲级考试 70 分以上,且已获合格证书者,可获优秀证书。合格证书获得者中,总评 80-100 分可领 50 元 PAT 代金券,60-80 分可领 20 元,全国考点通用,一年有效。 常见问题:非计算机专业、数学不好(会算术即可)的人,只要会编程就能学;不会编程的需先学基础(如翁恺老师的 C 语言课)。每周学习时间平均 4-8 小时,基础不同时间不同,可先在 PTA 自测。程序提交到 PTA 出错,多因自测数据简单或输出不规范,需用标准输入输出。PTA 测试数据不公布,遇卡壳可去论坛求助。PAT 是编程能力考试,分多个级别,甲级证书对就业有帮助,多家企业认可其成绩。

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧