我有一个链表的循环链表,只是弄清楚如何声明它,但我想知道如何通过它并打印第一个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}}工作
答案 0 :(得分:0)
考虑类的结构以及查询的结构。你问的是
ListofLists->next->value
ListofLists
的类型为List<List<int>>
,或者更重要的是List<something>
。关键是你要查看一个列表。列表的公共字段和成员函数是什么?根据你的班级声明,他们是
* `void insert()`
......那就是它。重要的是,next
中没有List<T>
。相反,next
是Node<T>
的成员函数,ListofLists
不是Node<T>
,它是List<T>
。但您无法通过 Node
访问 List<T>
!
您有几种选择。一种是向List<T>
添加成员函数,向您返回Node<T> &
或Node<T> *
(可能const
,具体取决于您需要做什么),以及您可以使用哪些功能浏览列表中的条目。