c++ 二叉树 access violation?链表不也是这样的吗?为什么以下代码会出错 求助

问题描述

c++ 二叉树 access violation?链表不也是这样的吗?为什么以下代码会出错 求助

#include
using namespace std;
class binary_tree_node
{
public:

    binary_tree_node(const int& init_data = int(),binary_tree_node*init_left=NULL,binary_tree_node* init_right=NULL)
    {
        data_field = init_data;
        left_field = init_left;
        right_field = init_right;
    }
    int& data(){return data_field;}
    binary_tree_node* left(){return left_field;}
    binary_tree_node* right(){return right_field;}
    void set_data(const int& new_data){data_field=new_data;}
    void set_left(binary_tree_node* new_left){left_field=new_left;}
    void set_right(binary_tree_node* new_right){right_field=new_right;}
    const int& data() const {return data_field;}
    const binary_tree_node* left() const{return left_field;}
    const binary_tree_node* right() const{return right_field;}
    bool is_leaf()const{return (left_field==NULL)&&(right_field==NULL);}
    bool is_left()const{return (left_field==NULL);}
    bool is_right()const{return (right_field==NULL);}
    private:
    int data_field;
    binary_tree_node* left_field;
    binary_tree_node* right_field;

};

void main()
{
binary_tree_node* p;
cout<is_leaf()<<endl;
}

解决方案

你main函数中怎么写的?指针有给它分配空间吗?指针有效吗?

解决方案二:

main函数中你是怎么写的?指针有给它分配空间吗?你的指针有效吗?

解决方案三:

使用就错了,is_leaf()是p的成员函数,怎么可以直接用,应该改成这样就可以运行

解决方案四:

你在主函数中只声明了一个指针,系统不会分配内内存的,直接输出叶子节点要出错的。

解决方案五:

main写错了,没有申请内存空间

解决方案六:

p数据初始化正确吗。指针有效?你出错的地方有非法指针

时间: 2024-08-19 20:20:18

c++ 二叉树 access violation?链表不也是这样的吗?为什么以下代码会出错 求助的相关文章

mfc-VC++报错,Access Violation.

问题描述 VC++报错,Access Violation. void CDahaojiDlg::OnTimer(UINT nlDEvent) { if(nlDEvent==2) { CTimeSpan time=time2-time1; strTime1.Format(""%2d小时 %2d分 %2d秒""time.GetHours()time.GetMinutes()time.GetSeconds()); GetDlgItem(IDC_STATIC29)->

Application Access Violation or Hang After Applying SP4(从微软站点找来的,E文,看看对你的情况是...

access|application|微软|站点 Application Access Violation or Hang After Applying SP4 This article discusses a Beta release of a Microsoft product. The information in this article is provided as-is and is subject to change without notice. No formal produc

提示access violation at address解决办法

 解决方法: 右击"我的电脑".单击"属性". 在"系统属性"中单击"高级". 在"性能"中单击"设置". 在"性能选项"中单击"数据执行保护". 单击"添加".选择要运行的程序. OK.就这么简单. Access Violation(非法访问)错误的解决方法 Access Violation(非法访问),General Pro

Win8系统提示错误Access Violation怎么办

  1.你如果用翻译软件翻译的话"Access Violation At Address"的意思是"在地址访问冲突",虽然具体意思不是这样,但这个问题是Access Violation计算机用户在运行的应用程序试图存取时未被指定使用的存储区出现的问题. 解决方法:将此应用程序设置为启用DEP. 具体解决步骤 1.首先,需要找到不需要启用DEP的应用程序的安装位置,在后面添加的时候需要按路径找到该应用程序.在桌面快捷方式上右键单击,选择"打开文件位置&quo

PHP has encountered an Access Violation at 0AEAAD66”错误原因

  这一段很背,就连这两天访问网站也会出错,提示"PHP has encountered an Access Violation at 0AEAAD66",查了一下,原来是MySQL数据库连接的问题.解决思路: 1.如果是新搭建的服务器,可以查看 C:windowssystem32libmysql.dll 文件名是否正确,把PHP安装目录里面的libmysql.dll文件复制到C:windowssystem32下面. 2.如果是之前搭建好的服务器,可以重启一下MySQL服务器试试.

XP系统提示“Access Violation At Address”如何解决

  XP系统提示"Access Violation At Address"如何解决 1.出现Access Violation At Address; 2.我们需要先右击我的电脑,单击,属性; 3.在"系统属性"中单击,高级; 4.在"性能"中单击,设置; 5.在"性能选项"中单击,数据执行保护; 6.单击"添加".选择要运行的程序; 7.点击,确定.这样就解决问题了; 8.重启电脑,再次打开那个程序就可以了

运行程序提示access violation at address的解决方法

现在把解决方法公布出来: 右击"我的电脑".单击"属性". 在"系统属性"中单击"高级". 在"性能"中单击"设置". 在"性能选项"中单击"数据执行保护". 单击"添加".选择要运行的程序. OK.就这么简单. Access Violation(非法访问)错误的解决方法 Access Violation(非法访问),Gener

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x......

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x...... 对于C++初学者或粗心者,很容易犯如下图所示错误: 那么该错误是由什么造成的呢? 答案无疑只有一个,即:读取了本该没有的值或者地址. 那么如何解决呢? 第一件事,检查下你传入的参数是否合法: 第二件事,若malloc了一块内存,必须记得free: 第三件事,你是否赋值了已经溢出的值或地址. 举例说

大规模问题-Intel Fortran跑程序的时候出现access violation错误。

问题描述 Intel Fortran跑程序的时候出现access violation错误. 小弟用Intel Visual Fortran运行一个三维的油藏数值模拟程序,小规模没有问题,但是当规模很大(例如跑200万的网格点)时,就会出现access violation错误.小弟用断点调试,在程序运行终止的地方随便放了一条write语句,结果就能跑了.小弟实在是想不明白了,放到网上请教各位看官有没有碰到类似问题的.乞求回答.小弟运行环境个人台式机,cpu是Intel i5 64位的,内存4G,I