Как перейти в связанный список связанных списков в C ++? - PullRequest
0 голосов
/ 06 мая 2018

У меня есть круговой связанный список связанного списка, и я только что понял, как его объявить, но я хочу знать, как пройти через него и напечатать направление или значение первого списка, я не уверен, что смог бы печатать вообще, так как я только экспериментирую

List<int> list1,list2,list3;
List<List<int>>*ListOfLists = new List<List<int>>();

ListOfLists->insert(list1);
ListOfLists->insert(list2);
ListOfLists->insert(list3);

Вот мой код Кругового связанного списка с его функцией вставки

  template <class T>
    class Node{
    public:
        T value;
        Node<T> * next;
        Node(){
            next = NULL;
        }
        Node(const T &dato, Node<T>* ptrnext = NULL){
            this->value = dato; 
            this->next = ptrnext;
        }
        ~Node(){
        }
    };



template <typename T>
class List {
    Node<T> *Head;
public:
    List() {
        Head = NULL;
    }
        void insert(T value) {

            if (Head == 0) {
                Head = new Node<T>(value);
                Head->next = Head;
                return;
            }

            Node<T> **next = &(Head->next);
            while (*next != Head) {
                next = &(*next)->next;
            }
            *next = new Node<T>(value, *next);


        }

Основная проблема в том, что я не могу сделать это ListofLists->next->value, и это то, что я хочу сделать, и мне сложно разобраться, я хочу хотя бы знать, что я могу сделать, чтобы ListofLists->next заработал

1 Ответ

0 голосов
/ 06 мая 2018

Подумайте о структуре вашего класса и структуре вашего запроса. Вы просите это за

ListofLists->next->value

ListofLists относится к типу List<List<int>> или, что более важно, List<something>. Ключевым моментом является то, что вы смотрите на список. Каковы открытые поля и функции-члены списка? Согласно объявлению вашего класса, они

* `void insert()`

... и все. Важно отметить, что в 1011 * нет next. Наоборот, next является функцией-членом Node<T>, а ListofLists - это не Node<T>, это List<T>. Но у вас нет никакого способа получить доступ к Node из List<T>!

У вас есть несколько вариантов. Одним из них является добавление функций-членов к List<T>, которые возвращают вам Node<T> & или Node<T> * (возможно, const, в зависимости от того, что вам нужно сделать), и которые вы можете использовать для перемещения по записям в списке. .

...