我有3个链表和联合功能
a
b
结果是我想用元素填充结果列表的列表,但它总是空的。
main是result.UnionSets(a,b)
函数是
void UnionSets(linkedlist & l1, linkedlist & l2)
{
node<type> *temp= l1.tail;
if(temp!=NULL)
{
while(temp->next!=tail)
{
AddNode(temp->data);
temp=temp->next;
}
}
temp=l2.tail;
if(temp!=NULL)
{
while(temp->next!=tail)
{
AddNode(temp->data);
temp=temp->next;
}
}
}
答案 0 :(得分:1)
这样的东西?
static linkedlist Union(linkedlist& A, linkedlist& B)
{
linkedlist result;
for(linkedlist::iterator iter = A.begin(); iter != A.end(); ++iter)
{
result.append(*iter);
}
for(linkedlist::iterator iter = B.begin(); iter != B.end(); ++iter)
{
result.append(*iter);
}
return result;
}
答案 1 :(得分:1)
我需要假设一些关于链表实现的事情。如果我的假设是错误的,那么我的回答也是错误的。
您正在初始化指向其链接列表的temp
元素的tail
指针。典型的命名法是从head
开始,朝tail
方向努力。此外,通常最终节点中的NULL为其下一个指针。
您正在将一个链接列表的节点与另一个链接列表上的节点进行比较。链接列表实际上是否交叉链接?或者它们实际上是否相互独立?
考虑到这两点,试试这个:
void UnionSets(linkedlist & l1, linkedlist & l2)
{
node<type> *temp= l1.head;
while(temp!=NULL)
{
AddNode(temp->data);
temp=temp->next;
}
temp=l2.head;
while(temp!=NULL)
{
AddNode(temp->data);
temp=temp->next;
}
}