问题描述
- 为什么内存不可访问?
-
#include
#include
#include
#include
#include
#define MaxSize 100
#define DataType char
using namespace std;//自定义函数,输出结点的数据域
//结点类
class Node {
friend class BTree;
private:
Node *lChild; //左子树指针
Node *rChild; //右子树指针
public:
DataType data; //数据域,存储数据元素//构造结点函数
Node(){
lChild = NULL;
rChild = NULL;
}//构造结点函数
Node(DataType item, Node *left = NULL,Node *right = NULL){
data = item;
lChild = left;
rChild = right;
}//析构函数
~Node(){}
};void Visit(Node* p) {
cout<data<<" ";
}
//二叉树类
class BTree {
public:
BTree(); //构造函数
void Create(int No[],char data[],int n); //创建二叉树
void Print(Node* r,int level); //实现二叉树的凹入表形式打印
private:
Node* root; //指向二叉树根结点的指针
};//创建二叉树二叉链表
BTree::BTree() {
root = NULL;
}
Node* BTree::getRoot() {
return root;
}// 已知二叉树的结点的层序编号序列,数据数列和结点数,建立此二叉树
void BTree::Create(int No[],char data[],int n) {
int num=1;
int row=1;Node *p = new Node;
for(int i=0;i
{
row=0;
p = this->root;
while(No[i]!=1){
while(1)
{
if(No[i]
break;
row++;
}
if(((No[i]-pow(2,row-1)+1)*2)>pow(2,row-1))
{
p=p->rChild;
}
else
{
p=p->lChild;
}
No[i]-=pow(2,row-2);
}
p->data = data[i];
}
}
int main()
{
int n,i;
int * No;//层序编号动态数组;
DataType *data;//结点数据动态数组;
cout<<"请输入结点数"<
cin>>n;
No=new int[n];
data=new char[n];
cout<<"请输入该结点的层序编号序列:";
for( i=0;i
cin>>No[i] ;cout<<"请输入结点的数据序列:";
for( i=0;i
cin>>data[i];BTree bt;
bt.Create(No,data,n);getch();
}
解决方案
YOU are becarefully to set initialize value!
解决方案二:
c++内存访问越界
汇编学习笔记:寄存器(内存访问)
纯DOS下内存的管理—实模式下访问4GB内存
解决方案三:
代码拷贝得好多错误,更新一下,都放到代码片里。
解决方案四:
variable "P" is point type. Point Value must not be null.
but becasue you miss to check var 's initialization!
"null"->point is invalid