到目前为止,我已经了解到链表是一个指向下一个节点的节点
第一 - 1 - 2 - 3 - 4 - 5 -6 - 7-空
我的问题是,是否可以将列表分成相等的块,如下所示
首页 - |1 2 3| - |4 5 6| - |7| - 空
我已经尝试将数据打包到如下所示的对象中
class IntegerData
{
private int[] data;
private int numData;
public IntegerData(int[] data)
{
data = new int[numData];
numData = 8;
}
}
This is my Node class.
class Node
{
private int m;
private Node next;
private Node prev;
public Node(Node prev,IntegerData data,Node next)
{
this.next = next;
this.prev = prev;
}
public Node getNext()
{
return next;
}
public void setNext(Node next)
{
this.next = next;
}
public Node getPrev()
{
return prev;
}
public void setPrev(Node next)
{
this.prev = next;
}
}
到目前为止,我被困住了。有人可以指出我正确的方向吗?
您可以只创建一个列表列表
List<Integer> list1 = Arrays.asList(1,2,3);
List<Integer> list2 = Arrays.asList(4,5,6);
List<Integer> list3 = Arrays.asList(7);
List<List<Integer>> masterList = Arrays.asList(list1, list2, list3);
通常您的节点应该是这样的:
public class Node<T> {
private Node<T> prev;
private Node<T> next;
private T data;
public Node(Node<T> prev, T data) {
this.prev = prev;
this.data = data;
if (prev != null) {
prev.setNext(this);
}
}
private void setNext(Node<T> next) {
this.next = next;
}
public Node<T> getPrev() {
return prev;
}
public Node<T> getNext() {
return next;
}
public T getData() {
return data;
}
}
现在,您可以在列表中放置任何内容,例如 Integer 数组:
Node<Integer[]> n1 = new Node<Integer[]>(null, new Integer[]{1, 2, 3});
Node<Integer[]> n2 = new Node<Integer[]>(n1, new Integer[]{4, 5, 6});
是的
每个节点可能有多个值。为此,您必须更改节点的结构。你正在使用这个
private int m;
private Node next;
private Node prev;
您必须创建更多变量甚至数组(根据您的选择)在这种情况下,我知道您需要在一个节点中三个变量,因此只需创建三个这样的变量
private int x;
private int y;
private int z;
private Node next;
private Node prev;