正如问题的名称所暗示的那样。我需要获取 2 个链表并仅从前 2 个链表共有的元素中创建第三个列表。
这是我写的函数
void computeC(DLL<int> &a, DLL<int> &b, DLL<int> &c)
{
Node<int> *hunterA, *hunterB;
hunterA = a.getHead();
hunterB = b.getHead();
while ( hunterA != NULL )
{
while ( hunterB != NULL )
{
int aData = hunterA->data, bData = hunterB->data;
if ( aData == bData )
{
int temp = bData;
c.progAppend2(temp);
}
else
{
hunterB = hunterB->next;
}
}
hunterA = hunterA->next;
}
c.output();
}
这是我的双向链表类中的 progAppend2() 函数
template <class Type>
void DLL<Type>::progAppend2(Type data)
{
Node<Type> *newNode = new Node<Type>;
newNode->data = data;
if ( head == NULL )
{
head = newNode;
tail = newNode;
size++;
}
else
{
tail->next = newNode;
newNode->prev = tail;
tail = tail->next;
size++;
}
}
这是 main()
int main (void)
{
int a[9] = {3,7,10,15,16,9,22,17,32};
int b[9] = {16,2,9,13,37,8,10,1,28};
DLL<int> listA, listB, listC, listD;
for ( int i = 0; i < 9; i++ )
{
listA.progAppend2(a[i]);
listB.progAppend2(b[i]);
}
computeC(listA,listB,listC);
listC.output();
return 0;
}
我遇到的问题是,由于某种原因,当我调用 output(); 时,ListC 没有填充任何内容,只是输出和空列表;
我认为问题出在 computeC 函数上。外层while循环应该设置hunterA指向ListA中的一个元素,然后内层循环应该将listB的每个元素与hunterA指向的元素进行比较。如果找到匹配项,则将该元素复制到 ListC 中。至少我认为它应该是这样工作的。我真的很感激任何帮助。