2012-09-19 198 views
1

我想创建一个链接列表,将保存其他int链接列表,我需要能够从主链接列表中访问int链接列表。链接列表的链接列表

我的问题是我如何指向主链表的节点来保存int链表的头部?

我创建了一个静态列表:dlist<Node<int>& > _plist; 我有一个函数:insertToHead (T const& dataToInsert); 但是从使用链表类我只有指针头,东西:Node<T>*。当我尝试将Node<T>*传递给T const&时,它给了我一个错误。

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

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链表?

+1

我不知道你是否在做这个练习,但是'std :: list >'可能适合你的需求。 – Mysticial

+0

从你的描述看来'getHead()'函数返回一个指针,但是你需要插入一个引用。一种方法是取消引用指针:_pList.insertToHead(* _ intList.getHead())'。至少,这在语法上是正确的。 (它是否真的有效,取决于'dlist'与你传递它的元素完全相同)。 – jogojapan

回答

0

使用标准容器不能指向元素,因为主要设计是元素仅由容器管理。

你所做的是一个容器的容器,即在你的情况下,一个dlist< dlist<int> >

在,例如,如果你想有一个是在包含在两个独立的链表,同时元素其它更复杂的情况下,你不过是运气与标准库...有一个与标准集装箱和无解您必须自己编写数据结构,否则您必须接受为某些操作支付额外费用。