任何帮助都会有所帮助。我编写了一个代码来查找两个链表的并集。但是,我在一个部分得到一个无限循环。我在代码中指出它。请帮我识别错误。感谢。
//Finds the union of two linked lists.
nodeType* unionLL(nodeType *&headA, nodeType *&headB)
{
nodeType *tempA, *tempB, *newNode;
tempA = headA;
tempB = headB;
bool match = false;
while (tempB -> link != NULL)
{
while (tempA -> link != NULL)
{
outfile <<"The infinite loop occurs here " << endl;
if (tempB -> intVal == tempA -> intVal)
{
match = true;
}
tempA = tempA -> link;
}
if (!match)
{
newNode = new nodeType;
newNode -> intVal = tempB -> intVal;
newNode -> link = NULL;
tempA -> link = newNode;
}
tempA = headB;
tempB = tempB -> link;
}
return headB;
}
答案 0 :(得分:4)
您尚未确定链接列表是否已排序 - 因此我们不应该假设。您尚未确定哪个列表可以修改;从表面上看,这两个列表都可以通过该功能进行修改。您返回headB
,表明结果应该是headB
中可访问的结果集应包含该列表中的每个元素,以及可从headA
访问的每个元素的新元素已经通过headB
找到了。
表面上看,你的伪代码应该是:
foreach element in listA
if (element not found in listB)
add copy of element to listB
离开listA未触及。您的代码未实现此逻辑。
答案 1 :(得分:0)
我认为你没有检查它是否在tampA循环中匹配(在Bsp>中都没有