|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如题,我写了2个创建树的函数,具体问题是:如果手动输入信息的话,遍历就没有问题,而如果使用数组模仿输入创建树的话,就会有很多看不懂的错误,而且有个神奇的现象,两次毫无变化的编译后,输出的结果竟然不一样- =。附上代码,求大神指教。
//这个是手动输入树
<void create_CBtree(cbNode* cb)
{
if((*cb) == nullptr)
init_CBtree(cb);
int length = 0;
char* tmpIn = new char[255];
cin.getline(tmpIn,255);
length = get_length_charM(tmpIn);
if(length == 0)
{
(*cb) = nullptr;
return;
}
(*cb)->dt->name = new char[length+1];
for(int i = 0;i < length;i++)
(*cb)->dt->name[i] = tmpIn[i];
cout<<"input eldest node : "<<endl;
create_CBtree(&((*cb)->eldest));
cout<<"input borther node : "<<endl;
create_CBtree(&((*cb)->borther));
delete tmpIn;
}>
//这个是基于一个数组自动进行
<static int imitate_index = 0;
char imitate[16] = {'A','B','D','#','E','#','#','C','F','#','G','#','#','#','#'};
void create_CBtree_auto(cbNode* cb)
{
if(imitate[imitate_index] == '#')
{
(*cb) = nullptr;
imitate_index++;
return;
}
init_CBtree(cb);
(*cb)->dt->name = new char[2];
(*cb)->dt->name[0] = imitate[imitate_index];
imitate_index++;
create_CBtree_auto(&(*cb)->eldest);
create_CBtree_auto(&(*cb)->borther);
}>
//最后表结构体信息附上
<
//树的结点
typedef struct Data
{
int id;
char* name;
}*data;
typedef struct CBtree
{
data dt;
struct CBtree* eldest;
struct CBtree* borther;
}*cbNode;
//队列结点和队列
typedef struct QueueNode
{
cbNode cdt;
struct QueueNode* next;
}*queueNode;
typedef struct Queues
{
queueNode frontP;
queueNode rearP;
}*queues;
> |
|