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

C++ c+中的指针+;没有显示正确的值,c++,pointers,C++,Pointers,我得到了3个链表和联合函数 ab和结果列表是我想用元素填充结果列表的列表,但它总是空的 main是结果。unionset(a,b)函数是 void UnionSets(linkedlist & l1, linkedlist & l2) { node<type> *temp= l1.tail; if(temp!=NULL) { while(temp->next!=tail) {

我得到了3个链表和联合函数

a
b
和结果列表是我想用元素填充结果列表的列表,但它总是空的

main是
结果。unionset(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;

        }
    }
}
void联合集(linkedlist&l1、linkedlist&l2)
{       
节点*temp=l1.tail;
如果(温度!=NULL)
{
while(临时->下一步!=尾部)
{
AddNode(临时->数据);
温度=温度->下一步;
}
}
温度=l2.5度;
如果(温度!=NULL)
{
while(临时->下一步!=尾部)
{
AddNode(临时->数据);
温度=温度->下一步;
}
}
}
像这样的东西

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

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

  • 您正在初始化指向链接列表的
    tail
    元素的
    temp
    指针。典型的命名法是从
    头部开始
    ,然后朝
    尾部开始。另外,最后一个节点中的下一个指针通常为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;
        }
    }
    
    void联合集(linkedlist&l1、linkedlist&l2)
    {       
    节点*temp=l1.head;
    while(temp!=NULL)
    {
    AddNode(临时->数据);
    温度=温度->下一步;
    }
    温度=l2.0水头;
    while(temp!=NULL)
    {
    AddNode(临时->数据);
    温度=温度->下一步;
    }
    }
    
    您的代码不清晰,无法编译,您可以按原样发布代码吗?这些都是什么意思?你想干什么
    UnionSets
    它应该创建一个新的链表,其中包含前两个列表的元素。add node也是一个函数,您可以忽略该部分。我只想在结果列表中填充一些值,但它总是空的。我想我需要这样做。add()或this*。添加类似的内容不确定声明“你可以忽略这一部分“相当于一种断言,即该错误不能以任何方式与该代码相关。你有多确定?考虑到你正在问一个关于一个非常常见的介绍性练习的问题,我们应该有多确定?因为这不是家庭作业,所以请使用
    std::list
    ,集中精力在程序的其他部分。我假设他的作业是必须与给定API匹配的家庭作业,但这确实是个好主意。将
    linkedlist::iterator
    更改为
    node*
    a.begin()
    更改为
    a.head
    a.end()
    更改为
    tail
    (或NULL),将
    +iter
    更改为
    iter=iter->next
    ,并将
    附加到
    AddNode
    。我所做的只是让它看起来像清晰、理智的C++。其好处是,可以很容易地将其制作成通用容器的模板函数。