社区
数据结构与算法
帖子详情
莫名其妙的运行时错误
xinshou000
2007-05-13 08:45:34
我用先根遍历的方式写了一个关于二叉树建立和遍历算法的程序,编译没有任何问题,可就是在主函数中运行时出现了出现错误的对话框,提示信息是一些看不明白的汇编代码.
我用的是devC++ 4.9.9.2,程序是老师在课堂上用turboc2.0演示成功的源程序,通过调试,建立二叉树的算法是成功了,可到了便利算法的程序时候就出现了错误,是不是编译器的问题呢?谢谢
...全文
361
10
打赏
收藏
莫名其妙的运行时错误
我用先根遍历的方式写了一个关于二叉树建立和遍历算法的程序,编译没有任何问题,可就是在主函数中运行时出现了出现错误的对话框,提示信息是一些看不明白的汇编代码. 我用的是devC++ 4.9.9.2,程序是老师在课堂上用turboc2.0演示成功的源程序,通过调试,建立二叉树的算法是成功了,可到了便利算法的程序时候就出现了错误,是不是编译器的问题呢?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xinshou000
2007-05-14
打赏
举报
回复
to:medie2005
谢谢你的指点.对于一般变量的传值调用和传地址调用我很清楚,只是对于这里的指针变量的传递没有搞清楚,还是要谢谢你,接下来就是好好调试调试了,希望以后能得到你的指点.
medie2005
2007-05-14
打赏
举报
回复
揭贴!
medie2005
2007-05-14
打赏
举报
回复
============================================
而且int createBTree(BTree T)不需要改动
============================================
楼主的基本功太不扎实了,也太懒了。
如果参数类型是BTree T,建立二叉树的过程的确无问题,但是只是表面上无问题而已!
如果参数类型是BTree T,你在函数createBTree(BTree T)中的所谓的给T分配内存、给T.data赋值这些操作的结果是无法保存下来的!
因为函数的参数类型是BTree T,是传值!传值与引用是不同的!
引用才可以保存你在createBTree(BTree T)中的所谓的给T分配内存、给T.data赋值这些操作的结果!传值与引用的区别你不会也不知道吧?
因此,在遍历时,函数int print(BTree T)中“printf("%c",T->data);”的T并未分配内存!因为以前的分配结果并没被保存下来!所以会提示“ 'XXX'指令引用的'XXXX'内存。该内存不能为'read'。”!
我昨天在DevC++ 4.9.9.2调试过了,改正后的代码已经贴上了。楼主连试都不试一下,让人寒心!
另外,如果你贴的代码真的是你老师在课堂上用的源程序,那你那个老师也是个垃圾!以后不用理他(她)了!
medie2005
2007-05-14
打赏
举报
回复
楼主搞什么啊?
我给你改的代码已经能在DevC++ 4.9.9.2运行无误了,楼主连我改的程序看都没看?
xinshou000
2007-05-13
打赏
举报
回复
我把程序写下便于大家分析:
#define MAX_TREE_DEGREE 10
#include<stdio.h>
#include<stdlib.h>
typedef struct BTnode{
char data;
struct BTnode* lchild;
struct BTnode* rchild;
}BTnode,*BTree;
//建立树
int createBTree(BTree T){
char ch;
if((ch = getchar())== ' ')
T = NULL;
else{
if(!(T=(BTnode*)malloc(sizeof(BTnode))))
return -1;
T->data = ch;
createBTree(T->lchild);
createBTree(T->rchild);
}
return 1;
}
//遍历
int preOrdTr1(BTree T){
if(T){
if(print(T))
if(preOrdTr1(T->lchild));
if(preOrdTr1(T->rchild));
return 1;
return 0;
}else return 1;
}
//print函数
int print(BTree T){
printf("%c",T->data);
return 1;
}
//主函数
int main(){
BTree T;
createBTree(T);
preOrdTr1(T);
system("pause");
return 0;
}
// 显示"****程序出现错误,对于此表示抱歉什么",谢谢大家分析
xinshou000
2007-05-13
打赏
举报
回复
我用的就是ANSI 标准的DevC++ 4.9.9.2啊,就是不过,程序应该没有问题,而且int createBTree(BTree T)不需要改动,就是在遍历的时候出现问题.我看老师用TC的时候竟然能通过,但是TC对标准支持的不多好,所以我就没有用TC.
出现了这个问题好长时间就是不知道怎么办?
yelling
2007-05-13
打赏
举报
回复
与这个相同的问题我以前回答过 也是TC上过 其他编译器不过 建议初学者不要用TC 用ANSI 标准C/C++ 的编译器
Estfania
2007-05-13
打赏
举报
回复
估计是运行支持库有问题;
版本不正确
medie2005
2007-05-13
打赏
举报
回复
改正后的程序如下:
#include<stdio.h>
#include<stdlib.h>
#define MAX_TREE_DEGREE 10
typedef struct BTnode{
char data;
struct BTnode* lchild;
struct BTnode* rchild;
}BTnode,*BTree;
int print(BTree T){
printf("ch==%c",T->data);
return 1;
}
int createBTree(BTree &T){ //此处原来的函数参数类型错误!
char ch;
ch = getchar();
if((ch)== ' ')
T = NULL;
else{
if(!(T=(BTnode*)malloc(sizeof(BTnode))))
return -1;
T->data = ch;
createBTree(T->lchild);
createBTree(T->rchild);
}
return 1;
}
int preOrdTr1(BTree T){
if(T){
if(print(T))
if(preOrdTr1(T->lchild));
if(preOrdTr1(T->rchild));
return 1;
return 0;
}else return 1;
}
int main(){
BTree T;
createBTree(T);
preOrdTr1(T);
system("pause");
return 0;
}
medie2005
2007-05-13
打赏
举报
回复
函数int createBTree(BTree T)的参数类型错误!
在创建前后,节点的数据域data是变化的(未创建时为空),并且必须要保存输入节点的数据data。因此,int createBTree(BTree T)中参数类型应该是引用,即BTree &T。
因此:
int createBTree(BTree T) 改为 int createBTree(BTree &T)。
金蝶专业版过账提示
运行时
错误
5_金蝶专业版过账时提示名称或代码在系统中已被使用...
今日做金蝶专业版时,由于凭证频繁的导出导入,在凭证导入后过账时出现
错误
提示:名称或代码在系统中已被使用不能过账经过及一番纠结后,成功解决现说一下解决过程。第一部一定要进行账套备份!!!!!!!!!!!!这个是最重要的。首先,先要把账套反结账到上一个账套期间然后,打开数据库找到账套实体,打开查询窗口运行一下命令exec sp_cleanitemdetailvgoupdate a set a.fdet...
【vs】vs编译爆出大量
莫名其妙
错误
的解决方法
如果你的vs编译时
莫名其妙
爆出很多
错误
,定位到改
错误
时,又明显没有
错误
解决方法:可能是那一代码页字符编码有问题,用vs打开该文件,选择 文件->高级保存->编码格式选择【GB2312 - 代码页936】点击保存就好了。 ...
VS2017编译出现
莫名其妙
的
错误
C2065
VS2017编译出现
莫名其妙
的
错误
C2065
MFC
莫名其妙
出现断言
错误
解决方案
如果你人你的代码百分百是正确的 并且这段代码在新建的工程里运行是完好的 但是这段代码在现有的工程上Debug模式下断言
错误
!!!! 请注意:你是否修改了动态库,而忘记重新全编译了!!!!! 请注意:你是否修改了动态库,而忘记重新全编译了!!!!! 请注意:你是否修改了动态库,而忘记重新全编译了!!!!! 笔者被坑了将近一天的时间,笔者的静态库更新了,但是没有对应的重新全编译,主工程编译是ok的,跑起来也是没问题的,但是关闭窗体的时候都会出现断言
错误
!!!!!!! ...
Xcode
运行时
候报路径
错误
和编译
错误
时及
莫名其妙
系列
错误
时
打开文件夹,前往/Users/用户名/Library/Developer/Xcode/DerivedData将里面保存的项目缓存和临时文件清空掉,模拟器上删除掉软件重新运行即可。搭配Product-clean使用效果更好哦
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章