Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在何处实现堆栈类(用于非递归二进制搜索函数)_C++_Binary_Stack_Queue_Binary Search Tree - Fatal编程技术网

C++ 在何处实现堆栈类(用于非递归二进制搜索函数)

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; }; }

首先,这当然是我的家庭作业,但我不会要求代码

在一个BST.h文件中,我实现了所有私有成员、函数和公共函数。但是,我发现在哪里实现堆栈(指向
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是的,一般都很好。