Я пытаюсь создать дерево структур и вставить мои данные для узлов дерева в структуру, которая содержит два носителя данных. Мои дерево/структуры данных выглядят так:Ошибка доступа к памяти Вставка структуры в Tree Struct 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
Специально не смешивайте его с оператором '>'. Похож на стрелу. –