BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #75262同步于 2013/11/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求高人指点~~】LNK2019:无法解析的外部符号

cptbtptp29
2013/11/19镜像同步5 回复
莫名其妙出现了这个错误: 百度了之后各种不明白,网上的各种解决方法均无效。。 刚刚接触数据结构伤不起啊~~还求版上高人相助啊~~ #include "stdafx.h" #include<iostream> using namespace std; template<class T> struct BiNode{ T data; BiNode<T>*lchild; BiNode<T>*rchild; }; template<class T> class BiTree{ public: BiNode<T>*root; BiTree(T data[]); void PreOrder(BiNode<T>*R); void InOrder(BiNode<T>*R); void PostOrder(BiNode<T>*R); void LevelOrder(BiNode<T>*R); int Count(BiNode<T>*R); int GetDepth(int m); void Route(BiNode<T>*R,int m,T data[]); ~BiTree(); private: void Creat(BiNode<T>* &R,T data[],int i); void Release(BiNode<T>*R); }; template<class T> void BiTree<T>::Creat(BiNode<T>* &R,T data[],int i){ if(data[i-1]!=0){ R=new Node<T>; R->data=data[i-1]; Creat(R->lchild,data,2*i); Creat(R->rchild,data,2*i+1); } else{ R=NULL; } } template<class T> void BiTree<T>::PreOrder(BiNode<T>*R){//前序遍历 if(R!=NULL){ cout<<R->data; PreOrder(R->lchild); PreOrder(R->rchild); } } template<class T> void BiTree<T>::InOrder(BiNode<T>*R){//中序遍历 if(R!=NULL){ InOrder(R->lchild); cout<<R->data; InOrder(R->rchild); } } template<class T> void BiTree<T>::PostOrder(BiNode<T>*R){//后序遍历 if(R!=NULL){ PostOrder(R->lchild); PostOrder(R->rchild); cout<<R->data; } } template<class T> void BiTree<T>::LevelOrder(BiNode<T>*R){//层序遍历 BiNode<T>*queue[1000]; int f=0,r=0; if(R!=NULL){ queue[++r]=R; } while(f!=r){ BiNode<T>*p=queue[++f]; cout<<p->data; if(p->lchild!=NULL){ queue[++r]=p->lchild; } if(p->rchild!=NULL){ queue[++r]=p->rchild; } } } template<class T> void BiTree<T>::Release(BiNode<T>*R){//释放二叉树 if(R!=NULL){ Release(R->lchild); Release(R->rchild); delete R; } } template<class T> BiTree<T>::~BiTree(){//析构 Release(root); } template<class T> int BiTree<T>::Count(BiNode<T>*R){//结点总数 if(R==NULL){ return 0; } else{ int m=Count(R->lchild); int n=Count(R->rchild); return m+n+1; } } template<class T> int BiTree<T>::GetDepth(int m){//深度 int d=1; for(;;){ int n=1; for(int i=0;i<d;i++){ n=n*2; } if(m>n-1){ d=d+1; } } return d; } template<class T> void BiTree<T>::Route(BiNode<T>*R,int m,T data[]){//路径 for(int i=0;i<m;i++){ if(data[i]==R->data){ cout<<R->data; } } for(int i=0;i<m;i++){ if(data[i]==R->lchild->data ||data[i]==R->rchild->data){ R->data=data[i]; Route(R,m,data); } } } int _tmain(int argc, _TCHAR* argv[]) { char tree[]={'A','B','C','D','E','G',0,0,0,'F',0,0,0}; BiTree<char> bitree(tree); int m=bitree.Count(bitree.root); bitree.PreOrder(bitree.root); bitree.InOrder(bitree.root); bitree.PostOrder(bitree.root); bitree.LevelOrder(bitree.root); bitree.GetDepth(m); bitree.Route(bitree.root,m,tree); return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
zhangaoran机器人#1 · 2013/11/19
建议你贴出源码…这样什么都看不出来啊……
cptbtptp29机器人#2 · 2013/11/19
贴了~~帮帮忙吧~~ 【 在 zhangaoran 的大作中提到: 】 : 建议你贴出源码…这样什么都看不出来啊……
frip机器人#3 · 2013/11/19
构造函数哪去了…………
cptbtptp29机器人#4 · 2013/11/19
看书上创建二叉树的函数式私有啊~~那要怎么访问? 【 在 frip 的大作中提到: 】 : 构造函数哪去了…………
frip机器人#5 · 2013/11/19
你在声明里不是声明了这个函数么……BiTree<T>::BiTree(T data[]),然后应该有对应的定义……就像你的BiTree::~BiTree()的定义一样