我正在嘗試創建一個結構樹並將我的數據插入到包含兩個數據持有者的結構中。我的樹/數據結構看起來像這樣:內存訪問衝突在樹結構中插入結構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
尤其不要將它與'>'運算符混用。看起來像一列箭。 –