重要问题?

chinayaolin 2003-10-09 05:29:02

/* 下面的程序中为什么不能返回 */
void pre(node *p) /*本程序的作用是建一颗无序二叉树*/
{ char *s;
scanf("%c",&s);
if(s=='k') return; /*返回主程序*/
else
{ if(s==' ') p=NULL;
else
{ p=(node *)malloc(sizeof(node));
p->data=s;
}
pre(p->left);
pre(p->right);
}
}
...全文
26 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Julian868 2003-10-10
  • 打赏
  • 举报
回复
每个递归式都要用'k'结束。
还是设静态标志位吧。
vanhui 2003-10-10
  • 打赏
  • 举报
回复
不断的递归调用啊,只输入一个k肯定停不下来啊,看你运气了.
建议把s作为全部变量用,应该可以一次返回.
chinayaolin 2003-10-10
  • 打赏
  • 举报
回复
对不起,上面的写错了,应该是char s
但这样,也不返回啊
windlrming 2003-10-09
  • 打赏
  • 举报
回复
中间有两句错了
scanf("%c",s);
if(*s=='k') return;
erfangto 2003-10-09
  • 打赏
  • 举报
回复
哈哈,,再仔细看看,,,你的程序毛病很多。。
coofucoo 2003-10-09
  • 打赏
  • 举报
回复
对于变量来说,
scanf里面就必须使地址,
而你此处定义的是指针,
你说他为什么不返回?
因为你必须输入一个和他所在地址单元的编号一样的数他才返回。
sldmjlhj 2003-10-09
  • 打赏
  • 举报
回复
注意你的S是 指向字符的指针,
char s;
scanf("%c",&s);
if(s=='k') return; /*返回主程序*/

char *s;
scanf("%c",s);
if(*s=='k') return; /*返回主程序*/
chinayaolin 2003-10-09
  • 打赏
  • 举报
回复
/* 下面的程序中为什么不能返回 */
void pre(node *p) /*本程序的作用是建一颗无序二叉树*/
{ char *s;
scanf("%c",&s);
if(s=='k') return; /*返回主程序*/
else
{ if(s==' ') p=NULL;
else
{ p=(node *)malloc(sizeof(node));
p->data=s;
}
if(p!=NULL)
{ pre(p->left);
pre(p->right);
}
}
}
chinayaolin 2003-10-09
  • 打赏
  • 举报
回复
我问的是:为什么我输入的是'k'却不能让它结束建树if(s=='k') return; /*返回主程序*/
renchen 2003-10-09
  • 打赏
  • 举报
回复
它问什么能返回呢,你看一下你的程序,只有
if(s=='k') return; /*返回主程序*/

其它不是k的就一直左加入一次s,右加入一次s,

pre(p->left);
pre(p->right);
这点出错了,即时建树无序,也必需确定他要放在左子,还是右子,呀。
你这左一下,右一下的是作什么的呢。

2,947

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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