还是昨天的问题

dreamsdark 2008-01-30 10:17:28
还是昨天的问题
// mlyyytree.cpp : Defines the entry point for the console application

#include "stdafx.h"
#include<iostream>
#define MAX 100
using namespace std;

typedef struct _ml_YYY_Node
{
int data;
struct _ml_YYY_Node * lc;
struct _ml_YYY_Node * rc;
}ml_YYY_BTree;//定义树结点的结构体



//二叉排序树的类定义
class ml_YYY_CreateTree
{
public:
ml_YYY_CreateTree(int r[],int n);

virtual ~ml_YYY_CreateTree();
void ml_YYY_InSert(ml_YYY_BTree * root , ml_YYY_BTree * s);//在二叉树中插入结点
void mlYYYinOrder(ml_YYY_BTree * root);//中序遍历
private:
ml_YYY_BTree * root;
ml_YYY_BTree * s; //二叉排序树的根指针
};


//插入操作
void ml_YYY_CreateTree:: ml_YYY_InSert(ml_YYY_BTree * root , ml_YYY_BTree * s)
{
if(root == NULL)
{
root = s ;
}
else if(s->data < root->data)
{
ml_YYY_InSert(root->lc , s);
}
else
{
ml_YYY_InSert(root->rc , s);
}
}





//二叉排序树的构造算法
ml_YYY_CreateTree:: ml_YYY_CreateTree(int r[],int n)
{
ml_YYY_BTree * root = NULL;
for(int i = 0;i < n;i++)
{
ml_YYY_BTree * s=(ml_YYY_BTree*)malloc(sizeof(ml_YYY_BTree));
if(s == NULL)
{
cout<<"Not Enough Memory!\n" ;
}
else
{
s->data = r[i];
s->lc = NULL;
s->rc = NULL;
ml_YYY_InSert( root , s);
}
}
}



//多态输出结果

class mlYYYshow
{
public:
virtual void disPlay(int n);
private:
int n;
};

class mlYYYcircleShow:public mlYYYshow
{
public:
void disPlay(int n)
{
if(n%3 == 0)
{
cout<<"Circle-"<<endl;
}
}
};

class mlYYYtriangleShow:public mlYYYshow
{
public:
void disPlay(int n)
{
if(n%3 == 1)
{
cout<<"Triangle-"<<endl;
}
}
};

class mlYYYrectangleShow:public mlYYYshow
{
public:
void disPlay(int n)
{
if(n%3 == 2)
{
cout<<"Rectangle-"<<endl;
}
}
};





//树的中序遍历算法
void mlYYYinOrder(ml_YYY_BTree * root)
{
if(root == NULL)
{
cout<<"the tree is null."<<endl;
}
else
{
mlYYYshow show;
mlYYYinOrder(root->lc);
show.disPlay(root->data);
mlYYYinOrder(root->rc);

}
}





void main()
{
int i,n;
int a[MAX];
cout<<"intput the number of the ver "<<endl;
cin >>n;
cout<<"请输入数字构造二叉树:"<<endl;
for(i=0;i<n;i++)
{
cin >> a[i] ;
if(a[i] < 0 || !cin)
{
cout<<"输入有误,请重新输入数字:"<<endl;
cin.clear(); //清除错误标记
cin.get(); //清除输入缓冲区
}
}
ml_YYY_BTree * Tree ;
Tree = ml_YYY_CreateTree(a, n);
cout<<"中序遍历树,输出如下:"<<endl;
mlYYYinOrder(Tree);
}

编译错误如下:
d:\Program Files\Microsoft Visual Studio .NET 2003\pro\2\2.cpp(166): error C2440: '=' : cannot convert from 'ml_YYY_CreateTree' to 'ml_YYY_BTree *'

我真的不知道该怎么办,时间很紧。
...全文
205 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_cheng_peng123 2008-02-06
  • 打赏
  • 举报
回复
1、 ml_YYY_BTree ,是你要生成的类型吧. ml_YYY_CreateTree(..) 中你可以使用单独的一个函数来返回一个ml_YYY_BTree类型的数据.
2、这二者不是一个类型
3、主要还是类设计上的不合理。修改一下就好了吧。
真相重于对错 2008-01-30
  • 打赏
  • 举报
回复
c++ 基本语法并不难,还是自己先看看吧
dreamsdark 2008-01-30
  • 打赏
  • 举报
回复
那该怎么办啊?
真相重于对错 2008-01-30
  • 打赏
  • 举报
回复
2、这二者不是一个类型
前面已经说了

这两个不是一种类型无法直接转换,
dreamsdark 2008-01-30
  • 打赏
  • 举报
回复
加上后,编译变成了:error C2440: '=' : cannot convert from 'ml_YYY_CreateTree *__w64 ' to 'ml_YYY_BTree *'
真相重于对错 2008-01-30
  • 打赏
  • 举报
回复
ml_YYY_BTree * Tree =new ml_YYY_BTree
dreamsdark 2008-01-30
  • 打赏
  • 举报
回复
那我想用一个结点指针指向创建的树应该怎么办呢?
真相重于对错 2008-01-30
  • 打赏
  • 举报
回复

ml_YYY_BTree * Tree ;
Tree = ml_YYY_CreateTree(a, n);
===
这句话有问题
1、 Tree 是个指针 ml_YYY_CreateTree(..) 是 ml_YYY_CreateTree的构造函数 ,在c++中直接用构造函数,相当于给一个值变量赋值
2、这二者不是一个类型
xiaojing7 2008-01-30
  • 打赏
  • 举报
回复
error C2440: '=' : cannot convert from 'ml_YYY_CreateTree' to 'ml_YYY_BTree *'
paula2008 2008-01-30
  • 打赏
  • 举报
回复
up

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧