|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Thirteen 于 2015-4-22 10:39 编辑
小甲鱼《数据结构与算法》视频中的二叉树遍历程序如下:
//省略头文件之类
typedef struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
void CreateBiTree(BiTree *T)
{
char c;
scanf("%c",&c);
if (' '==c)
{
*T=NULL;
}
else
{
*T=(BiTNode *)malloc(sizeof(BiTNode));
****************************************
(*T)->data=c;
****************************************
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
int main()
{
BiTree T;
CreateBiTree(&T);
return 0;
}
上述例子代码是可以正常运行的!
但是!!!!
我想在二叉树里存储的自定义的数据类型,存储一个vector<char>型作为数据类型:
****//以下为测试程序,只把数据赋值部分做个简单修改,以验证其能否存储vector<char数据***
typedef struct BiTNode
{
vector<char> data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
再把createBiTree()函数中,****之间的“ (*T)->data=c; ” 改成:
vector<char> ch;
ch.pusn_back(c);
(*T)->data=ch;
此处为,假设存储字符c的向量!
然后这样就会在此处报错!!!!
错误如下:
二叉树的遍历.exe 中的 0x5673ad4a (msvcp100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdd1 时发生访问冲突
注:头文件以及using namespace等问题都不存在!
经过多次调试,问题就只出在改动部分,存储数据类型上!!
也调试过改成结构体数据类型也可以运行!!但是只要是vector或者结构体中有vector都会报上述错误!
由于在编写别的代码时,创建的数据结构体中有vector所以建立不了二叉树!
请各位大神指教一下:这是什么问题造成的,有什么办法可以修改此问题?(本人新手,本来想悬赏等级不够)
|
|