Связанный список связанных списков

Я пытаюсь создать связанный список, который будет содержать другие связанные списки 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?


person user1677554    schedule 19.09.2012    source источник
comment
Не знаю, делаете ли вы это в качестве упражнения, но, возможно, std::list< std::list<int> > может удовлетворить ваши потребности.   -  person Mysticial    schedule 19.09.2012
comment
Из вашего описания кажется, что функция getHead() возвращает указатель, но вам нужно вставить ссылку. Один из способов сделать это - разыменовать указатель: _pList.insertToHead(*_intList.getHead()). По крайней мере, это было бы синтаксически правильно. (Действительно ли это работает, зависит от того, что dlist делает именно с переданным вами элементом).   -  person jogojapan    schedule 19.09.2012


Ответы (1)


В стандартных контейнерах вы не можете указывать на элементы, потому что основная конструкция заключается в том, что элементы управляются только контейнером.

То, что вы делаете, - это контейнер контейнеров, то есть в вашем случае dlist< dlist<int> >.

В других более сложных случаях вам, однако, не повезло со стандартной библиотекой ... например, если вы хотите иметь элементы, которые одновременно содержатся в двух независимых связанных списках, нет решения со стандартными контейнерами, и вам нужно закодировать структура данных самостоятельно или вы должны согласиться оплатить дополнительные расходы за некоторые операции.

person 6502    schedule 19.09.2012