Я получаю ошибку сегментации в if (currNode->right)
проверке. Может ли кто-нибудь заметить очевидную ошибку, которую я совершил?Сегментация Неисправность нулевой проверки указателя
struct node
{
int data;
node* left;
node* right;
};
void Preorder(node *root) {
std::stack<node*> currStack;
currStack.push(root);
while(currStack.top()) {
node *currNode = currStack.top();
currStack.pop();
if (currNode->right) {
currStack.push(currNode->right);
}
if (currNode->left) {
currStack.push(currNode->left);
}
// Print to console
printf("%d ", currNode->data);
}
}
Это может быть связано с моей основной функцией, поэтому я добавлю его ниже для справки:
int main() {
node myNode;
myNode.data = 3;
node myNode1;
myNode1.data = 4;
node myNode2;
myNode2.data = 5;
node myNode3;
myNode3.data = 6;
node myNode4;
myNode4.data = 7;
myNode.left = &myNode1;
myNode.right = &myNode2;
myNode1.left = &myNode3;
myNode1.right = &myNode4;
Preorder(&myNode);
return 0;
}
Пожалуйста ** [править] ** Ваш вопрос с [mcve] или [SSCCE (Short, самодостаточной Правильный пример)] (HTTP: // sscce.org) – NathanOliver
Что произошло, когда вы запускали вашу программу через отладчик? Вы все еще не могли найти, где была ошибка? –
Ошибка сегментации не обязательно означает разыменование указателя NULL. Используйте отладчик и посмотрите, что такое значение 'currNode'. – YSC