如何在c ++的链表列表中移动?

时间:2018-05-06 17:34:45

标签: c++ linked-list circular-list

我有一个链表的循环链表,只是弄清楚如何声明它,但我想知道如何通过它并打印第一个List的方向或值,我不确定如果我可以打印,因为我只是在尝试

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这就是我想要做的事情并且难以搞清楚,我想至少知道我能做些什么{ {1}}工作

1 个答案:

答案 0 :(得分:0)

考虑类的结构以及查询的结构。你问的是

ListofLists->next->value

ListofLists的类型为List<List<int>>,或者更重要的是List<something>。关键是你要查看一个列表。列表的公共字段和成员函数是什么?根据你的班级声明,他们是

* `void insert()`

......那就是它。重要的是,next中没有List<T>。相反,nextNode<T>的成员函数,ListofLists不是Node<T>,它是List<T>。但您无法通过 Node 访问 List<T>

您有几种选择。一种是向List<T>添加成员函数,向您返回Node<T> &Node<T> *(可能const,具体取决于您需要做什么),以及您可以使用哪些功能浏览列表中的条目。