每个节点可以有多个值吗?

时间:2016-02-07 18:56:55

标签: java linked-list

到目前为止,我已经了解到链表是一个指向下一个

的节点

first - 1 - 2 - 3 - 4 - 5 -6 - 7-null

我的问题是,是否可以将列表分成相同的块,如下所示

首先 - | 1 2 3 | - | 4 5 6 | - | 7 | - null

我已经尝试将数据打包到下面的对象中

   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;
  } 
}

我现在被困住了。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:0)

您只需创建列表列表

即可
    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);

答案 1 :(得分:0)

通常,您的节点应该是这样的:

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});

答案 2 :(得分:0)

是每个节点可能有多个值。 为此,您必须更改节点的结构。 你正在使用这个

  private int m;
  private Node next;
  private Node prev;

您必须创建更多变量甚至数组(根据您的选择) 在这种情况下,我得到你在一个节点中需要三个变量,所以只需创建三个这样的

   private int x;
   private int y;
   private int z;
   private Node next;
   private Node prev;