<分区>
我在实现使用模板的红黑树时遇到问题。我已经阅读并理解了目的,但不知道如何将它实现到头文件和 .cpp 文件中。我在一些论坛上读到它们必须与模板在同一个文件中,而其他人则说它们可以分开但在 .hpp 文件中。
头文件
enum nodeColor { RED, BLACK };
template <class myType>
struct nodeType
{
myType keyValue;
nodeColor color;
nodeType<myType> *left;
nodeType<myType> *right;
nodeType<myType> *parent;
};
template<class myType>
class redBlackTree
{
public:
redBlackTree() {}
~redBlackTree() {}
void destroyTree();
unsigned int countNodes() const;
unsigned int height() const;
void printTree() const;
void insert(myType);
bool search(myType);
private:
bool search(myType, nodeType<myType> *);
void destroyTree(nodeType<myType> *);
unsigned int countNodes(nodeType<myType> *) const;
unsigned int height(nodeType<myType> *) const;
void printTree(nodeType<myType> *) const;
void rightRotate(nodeType<myType> *);
void leftRotate(nodeType<myType> *);
};
.cpp文件
#include "redBlackTree.h"
using namespace std;
redBlackTree::redBlackTree()
{
}
redBlackTree::~redBlackTree()
{
}
void redBlackTree::destroyTree()
{
}
unsigned int redBlackTree::countNodes() const
{
}
unsigned int redBlackTree::height() const
{
}
void redBlackTree::printTree() const
{
}
void redBlackTree::insert(myType)
{
}
bool redBlackTree<myType>::search(myType)
{
}
bool redBlackTree::search(myType, nodeType<myType> *)
{
}
void redBlackTree::destroyTree(nodeType<myType> *)
{
}
unsigned int redBlackTree::countNodes(nodeType<myType> *) const
{
}
unsigned int redBlackTree::height(nodeType<myType> *) const
{
}
void redBlackTree::printTree(nodeType<myType> *) const
{
}
void redBlackTree::rightRotate(nodeType<myType> *)
{
}
void redBlackTree::leftRotate(nodeType<myType> *)
{
}
我也知道我没有包含参数。我主要问的是如何解决这个问题,以便我可以开始编写代码。