C++ - 表达式必须是可修改的左值?
C++ - expression must be a modifiable lvalue?
所以我现在正在实施 BST,并且正在尝试编写后继函数。这就是我现在拥有的:
int BinarySearchTree::TREE_SUCCESSOR(node* x)
{
node* y = NULL;
if (x->right != NULL)
{
return FIND_MIN(x->right);
}
else
{
y = x->parent;
while (y != NULL && x = y->right)
{
x = y;
y = y->parent;
}
return y->key;
}
}
但是在这一行:
while (y != NULL && x = y->right)
我在 y
上收到此错误:
Expression must be a modifiable lvalue
为什么会出现此错误?
任何帮助将不胜感激,谢谢!!
看来你的意思如下
while (y != NULL && x == y->right)
^^^
至于错误消息的含义,那么当你使用赋值运算符时,它的优先级低于相等和逻辑运算符的优先级,你实际上有
while ( ( y != NULL && x ) = y->right)
考虑到y
的声明放在else语句的代码块中会好很多,因为它只在这个范围内使用
//...
else
{
node* y = x->parent;
所以我现在正在实施 BST,并且正在尝试编写后继函数。这就是我现在拥有的:
int BinarySearchTree::TREE_SUCCESSOR(node* x)
{
node* y = NULL;
if (x->right != NULL)
{
return FIND_MIN(x->right);
}
else
{
y = x->parent;
while (y != NULL && x = y->right)
{
x = y;
y = y->parent;
}
return y->key;
}
}
但是在这一行:
while (y != NULL && x = y->right)
我在 y
上收到此错误:
Expression must be a modifiable lvalue
为什么会出现此错误?
任何帮助将不胜感激,谢谢!!
看来你的意思如下
while (y != NULL && x == y->right)
^^^
至于错误消息的含义,那么当你使用赋值运算符时,它的优先级低于相等和逻辑运算符的优先级,你实际上有
while ( ( y != NULL && x ) = y->right)
考虑到y
的声明放在else语句的代码块中会好很多,因为它只在这个范围内使用
//...
else
{
node* y = x->parent;