我正在研究这个在hackerrank上查找合并节点的方法。我的方法是:当两个节点都不为空时,我想将其中一个列表移动到它们的下一个节点,这是flag变量的用途。但不知何故,它给我分段错误?我是否意外地访问了一个空变量?有人请赐教。以下是我的方法代码。查找合并节点时发生分段错误?
约束:这两个列表将收敛和两个列表都是非NULL
int FindMergeNode(Node *headA, Node *headB)
{
// Complete this function
// Do not write the main method.
bool flag = true;
while(headA != headB){
if(flag) headA=headA->next;
else headB=headB->next;
flag = !flag;
}
return headA->data; //or headB->data;
}
为什么不看你的调试器? –
你永远不会检查'headA'或'headB'是否为'NULL'。试图从'(NULL) - > next'读取将会调用未定义的行为。 – Havenard
我之前检查过,并试图缩短我的代码,并把它放在while循环中。谢谢,我会在我的代码中修复它。 –