啊。。。。疯了。。关于模板类。。。又出错又出错
这是头文件..
- C/C++ code
#ifndef BINARYSEARCHTREE_H#define BINARYSEARCHTREE_Htemplate<typename Object>class BinarySearchTree{ public: BinarySearchTree(); ~BinarySearchTree(); BinarySearchTree( const BinarySearchTree &rhs ); BinarySearchTree &operator=( const BinarySearchTree &rhs ); /** * 查找这棵树的最大值 * 返回该最大值 */ const Object &FindMax() const; /** * 用于查找这棵树的最小值 * 返回该最小值 */ const Object &FindMin() const; /** * 用于查询一个值是否在树里 * element是需要查找的值 * 如果element在这棵树里,返回true,否则为false */ bool Contains( const Object &element ) const; /** * 用于判断一棵树是否为空 * 如果该树为空树,返回true,否则返回false */ bool Empty() const; /** * 用于打印一棵树,前序 */ void PrintfTree() const; /** * 删除一棵树所有节点,使之为空。 */ void MakeEmpty(); /** * 在一棵子树上插入一个节点。 * element为需要插入的数据 * 插入一个新节点 */ void Insert( const Object &element ); /** * 在一棵子树上删除一个节点 * element为需要删除的节点 */ void Remove( const Object &element ); private: struct Node { Node( const Object &element, Node *left, Node *right ): m_element(element), m_left(left), m_right(right) { } Object m_element; Node *m_left; Node *m_right; }; Node *root; void Insert( const Object &element, Node *&tree ) const; void Remove( const Object &element, Node *&tree ) const; bool Contians( const Object &element, Node *&tree ) const; void MakeEmpty( Node *&tree ); void PrintTree( Node *tree ) const; Node *Clone( Node *tree ) const; Node *FindMax( Node *tree ) const; Node *FindMin( Node *tree ) const;};#endif这是源文件,只求编译通过
- C/C++ code
#include "BinarySearchTree.h"#include <iostream>template<typename Object>BinarySearchTree<Object>::BinarySearchTree( const BinarySearchTree &rhs ){ this->operator=(rhs);}template<typename Object>BinarySearchTree<Object> &BinarySearchTree<Object>::operator=( const BinarySearchTree &rhs ){ if( this != &rhs ) { MakeEmpty(); root = Clone( rhs.root ); } return *this;}template<typename Object>void BinarySearchTree<Object>::MakeEmpty(){ MakeEmpty( root );}template<typename Object>void BinarySearchTree<Object>::MakeEmpty( Node *&tree ){ if( tree == NULL ) { return; } if( tree->m_left != NULL ) { MakeEmpty( tree->m_left ); } if( tree->m_right != NULL ) { MakeEmpty( tree->m_right ); } delete tree;}template<typename Object>BinarySearchTree<Object>::Node *Clone( Node *tree ) const{ if( tree == NULL ) { return NULL; } else { return new Node( tree->m_element, Clone(tree->m_left), Clone(tree->m_right) ); }}template<typename Object>BinarySearchTree<Object>::~BinarySearchTree(){ MakeEmpty();}[解决办法]
疯什么?照抄Mark Allen Weiss的《数据结构与算法分析C++描述》第三版也会出问题吗?
代码在此:http://users.cis.fiu.edu/~weiss/dsaa_c++3/code/CodeWin.zip
书的中文电子版在此:http://ishare.iask.sina.com.cn/f/22293000.html
------解决方案--------------------
[解决办法]
怎么感觉定义的那么复杂。。
[解决办法]