C++ 在何处实现堆栈类(用于非递归二进制搜索函数)
首先,这当然是我的家庭作业,但我不会要求代码 在一个BST.h文件中,我实现了所有私有成员、函数和公共函数。但是,我发现在哪里实现堆栈(指向C++ 在何处实现堆栈类(用于非递归二进制搜索函数),c++,binary,stack,queue,binary-search-tree,C++,Binary,Stack,Queue,Binary Search Tree,首先,这当然是我的家庭作业,但我不会要求代码 在一个BST.h文件中,我实现了所有私有成员、函数和公共函数。但是,我发现在哪里实现堆栈(指向BSTNode的指针堆栈)很困难 那会是这样吗 #ifndef BINARYSEARCHTREE_H #define BINARYSEARCHTREE_H class BinarySearchTree { struct Node { Node* left; Node* right; int val; }; }
BSTNode
的指针堆栈)很困难
那会是这样吗
#ifndef BINARYSEARCHTREE_H
#define BINARYSEARCHTREE_H
class BinarySearchTree
{
struct Node {
Node* left;
Node* right;
int val;
};
};
#endif
那么,我是在BinarySearchTree
类内部还是在同一个.h文件中的类外部实现堆栈类呢
教授没有要求两个不同的.h文件,所以我认为它应该是内部或外部的。如果它在binarysearchtree类中,那么stack类的构造函数呢?您可能希望在
BST
类之外实现堆栈。通常,当嵌套类专用于父类时,使用嵌套类。例如,节点
是嵌套的,因为没有BST
就不会使用节点
堆栈实际上与BST
无关,即使您要将其用于BST
。如果您设计了一个好的堆栈
,这将允许您重用它,而无需将其从BST
中拉出
在头文件中包含多个类声明并不是不正确的,只要它们很小,并且逻辑上是连接的。但这要归结到风格和项目要求。你的要求有点令人困惑。您可以将BST类和堆栈彼此分离,但如果它们在逻辑上连接,则可以将它们放在同一个.h文件中。或者您可以将堆栈类嵌套在BST中(不推荐)。好的,标准库有
头,而不是
头@Koushik是的,你是对的。谢谢你的帮助。我没有在一个.h文件中创建任何单独的类(是的,我嵌套了),因此我的不确定性。谢谢。但我不明白为什么需要一个堆栈来实现BST。@AdamSchnitzer谢谢你的回答。所以我假设在一个.h文件中实现两个独立的类是可以的?@john你不会的。我想任务是用堆栈进行遍历。@john表示临时非递归遍历和deletion@LeonardLie是的,一般都很好。