我收到关于指针变量跟踪电流可能未初始化的错误,我对它发生的原因感到有些困惑。
这是我遇到问题的插入函数(错误指向最后一个if语句)
template <class elemType>
void bSearchTreeType<elemType>::addCustomer(const elemType& insertItem)
{
binaryTreeNode<elemType> *current; //pointer to traverse the tree
binaryTreeNode<elemType> *trailCurrent; //pointer behind current
binaryTreeNode<elemType> *newNode; //pointer to create the node
newNode = new binaryTreeNode<elemType>;
assert(newNode != NULL);
newNode->info = insertItem;
newNode->llink = NULL;
newNode->rlink = NULL;
if (root == NULL)
root = newNode;
else
{
current = root;
while (current != NULL)
{
trailCurrent = current;
if (current->info == insertItem)
{
cerr << "The insert item is already in the list-";
cerr << "duplicates are not allowed."
<< insertItem << endl;
return;
}
else if (current->info > insertItem)
current = current->llink;
else
current = current->rlink;
}//end while
if (trailCurrent->info > insertItem)
trailCurrent->llink = newNode;
else
trailCurrent->rlink = newNode;
}
}//end insert
答案 0 :(得分:0)
我很确定这只是编译器感到困惑。显然,如果root
为NULL,则它根本不会通过带有while循环的else部分,如果root
不是NULL,那么trailCurrent
将始终设置为必须的至少进行一次循环。
如果是我,我会在我确定警告不正确时将trailCurrent
初始化为root
(或NULL)。