2012-09-19 251 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> >

在,例如,如果你想有一個是在包含在兩個獨立的鏈表,同時元素其它更復雜的情況下,你不過是運氣與標準庫...有一個與標準集裝箱和無解您必須自己編寫數據結構,否則您必須接受爲某些操作支付額外費用。