Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链表的链表_C++_Doubly Linked List - Fatal编程技术网

C++ 链表的链表

C++ 链表的链表,c++,doubly-linked-list,C++,Doubly Linked List,我正在尝试创建一个链表,它将保存其他int链表,我需要能够从主链表访问int链表 我的问题是如何将主链表的节点指向int链表的头部 我创建了一个静态列表:dlist _plist; 我有一个函数:insertToHead T const&dataToInsert; 但是在使用链表的类中,我只有指向头部的指针,比如:Node*。当我试图将Node*传递给T常量时,它给出了一个错误 这是使用链表的类的构造函数: Set::Set(int numArray[], int size) { dl

我正在尝试创建一个链表,它将保存其他int链表,我需要能够从主链表访问int链表

我的问题是如何将主链表的节点指向int链表的头部

我创建了一个静态列表:dlist _plist; 我有一个函数:insertToHead T const&dataToInsert; 但是在使用链表的类中,我只有指向头部的指针,比如:Node*。当我试图将Node*传递给T常量时,它给出了一个错误

这是使用链表的类的构造函数:

Set::Set(int numArray[], int size)
{

    dlist<Node<int> > _plist; //static main list
    dlist<int> _intList ; //int list
    dlist<int> list;     //int list

    int i;

    for (i=0; i < size; i++)
    {
       list.insertInOrder(numArray[i]); //insert in to int list
    }

    this->_intList = list;

    this->_plist.insertToHead(  _intList.getHead()); //gives an error

};

这是在主列表和int链表之间进行链接的正确方法吗?

对于标准容器,您不能指向元素,因为主要设计是元素仅由容器管理

您所做的是一个容器的容器,即在您的情况下是一个dlist


但是,在其他更复杂的情况下,您使用标准库时运气不佳。。。例如,如果您希望同时将元素包含在两个独立的链表中,则没有标准容器的解决方案,您必须自己对数据结构进行编码,或者您必须接受为某些操作支付额外费用。

我不知道您是否将此作为练习,但是std::list可能适合您的需要。根据您的描述,getHead函数似乎返回指针,但您需要插入引用。一种方法是取消对指针的引用:_pList.insertToHead*_intList.getHead。这至少在语法上是正确的。它是否真的有效,取决于dlist对您传递给它的元素所做的操作。