想问一下这里为什么用new给p申请内存会失败呢?我的思路就是想定义一个指针数组,数组中存放的是nodelist类型的结构体指针,然后利用层序结构和结点的度构建好相对应的二叉树后,再将t的指向等于p[0]的指向,那么二叉树建立完毕,再释放p数组;但是我运行的时候,系统根本就没有给数组p分配内存,所以一直报内存冲突
#include<stdio.h>
#include<stdlib.h>
#define maxsize 20
typedef struct node
{
int key;
struct node* lchild, * rbro;
}node,*nodelist;//孩子兄弟表示法来构建森林
typedef struct
{
int key, du;
}dnode;
typedef struct
{
dnode data[maxsize];
int num;
}list;//定义一种结构体,知道其层次序列和对应的结点的度
void build_level(nodelist& t, list temp)//利用树的层次序列和相关结点的度来构建对应的二叉树
{
nodelist* p = new nodelist[maxsize];
int i = 0, j = 0, k = 0;
for (int i = 0; i < temp.num; i++)
{
p[i]->key = temp.data[i].key;
p[i]->lchild = p[i]->rbro = NULL; //初始化
}
for (int i = 0; i < temp.num; i++)
{
if (temp.data[i].du != 0)
{
k++;
p[i]->lchild = p[k];
for (j = 1; j < temp.data[i].du; j++)
{
k++;
p[k - 1]->rbro = p[k];
}
}
}
t = p[0];//t也为nodelist的结构体指针,其指向根结点的结构体,而p[0]中存放的即是指向根结点的nodelist结构体指针
delete[]p;
}