c ++中的指针没有显示正确的值

时间:2012-03-27 17:33:12

标签: c++ pointers

我有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;

        }
    }
}

2 个答案:

答案 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)

我需要假设一些关于链表实现的事情。如果我的假设是错误的,那么我的回答也是错误的。

  1. 您正在初始化指向其链接列表的temp元素的tail指针。典型的命名法是从head开始,朝tail方向努力。此外,通常最终节点中的NULL为其下一个指针。

  2. 您正在将一个链接列表的节点与另一个链接列表上的节点进行比较。链接列表实际上是否交叉链接?或者它们实际上是否相互独立?

  3. 考虑到这两点,试试这个:

    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;
        }
    }