我正在尝试创建一个结构树并将我的数据插入到包含两个数据持有者的结构中。我的树/数据结构看起来像这样:内存访问冲突在树结构中插入结构C++
class BinarySearchTree
{
private:
struct IndexEntry
{
int acctID; // (key) Account identifier
long recNum; // Record number
};
struct tree_node
{
IndexEntry* entry;
tree_node* left;
tree_node* right;
};
tree_node* root;
public:
BinarySearchTree()
{
root = NULL;
}
bool isEmpty() const { return root == NULL; }
void insert(int, int);
int search(int);
int treeSearch(tree_node*, int);
};
我得到一个内存访问冲突在我插入功能这一点,并说实话,这是第一次我试图结构的树,以便我不知道它是否是一个正确的插入函数。但它是这样的:
void BinarySearchTree::insert(int rNum, int aNum)
{
tree_node* t = new tree_node;
tree_node* parent;
t -> entry -> recNum = rNum; //right here I get a violation
t -> entry -> acctID = aNum; //but if I remove the assignments
t -> left = NULL; //it gives me a violation further down
t -> right = NULL;
parent = NULL;
if (isEmpty())
root = t;
else
{
tree_node* current;
current = root;
// Find the Node's parent
while (current)
{
parent = current; //This whole block will give me a memory violation
if (t -> entry -> recNum > current -> entry -> recNum)
current = current -> right;
else current = current -> left;
}
if (t -> entry -> recNum < parent -> entry -> recNum)
parent -> left = t;
else
parent -> right = t;
}
}
请参阅我的意见在第二块代码中的内存访问冲突的位置。我认为代码中有未初始化的东西,但我不知道它会在哪里或如何初始化它。
任何帮助或方向将不胜感激!
你永远不会初始化' T-> entry'。 – Barmar
不要在' - >'周围放置空格,这不是惯用的。 – Barmar
尤其不要将它与'>'运算符混用。看起来像一列箭。 –