将链接列表插入另一个链接列表

时间:2013-06-26 09:19:25

标签: java

目前,我在LinkedList(而不是Java的一个)类中有一个方法,它将单个节点添加到LinkedList,它看起来像这样:

  public void add(int index, T v) {
     if(isValidIntervalPosition(index)) {
        Node<T> n = new Node<T>(v);
        if(index == 0) {
           n.setNext(head);
           head = n;
        }
        else {
           Node<T> m = head;
           int count = 1;
           while(count < index) {
              m = m.getNext();
              count++;
           }

           n.setNext(m.getNext());
           m.setNext(n);
        } 

        sz++;
     }
  }

但我想实现另一种方法,将节点从输入LinkedList添加到当前的LinkedList。

这是骨架:

 public void add(int position, LinkedList<T> list) {


 }

我一直在玩它几个小时没有结果。如果我已经可以插入单个节点,我将如何进行此操作?

4 个答案:

答案 0 :(得分:2)

尝试:

public void add(int position, LinkedList<T> list) {
    int index = position;
    for(T elem : list) {
        add(index ++, elem) // call to your implementation + increment index
    }
}

答案 1 :(得分:0)

我认为你可以做到

public void add(int position, final LinkedList<T> list) {
    for(int i = 0; i < list.size(); i++) {
        add(position++, list.get(i));
    }
}

答案 2 :(得分:0)

您要做的是不要触摸要添加的列表的每个节点。 相反,要在节点listu之间插入v,您u.next指向list.headlist.tail.next(最后一个元素,我不知道)知道你是否存储list.tail或者必须遍历list的所有节点来获取它)指向v(旧的u.next

如果不知道列表类的详细信息(即有哪些成员和方法),很难编写代码示例。

特别是,由于实现自己的LinkedList对您的程序很少有用,但通常是对数据结构的练习,这是获得“添加整个列表”练习最重要的事情。

答案 3 :(得分:-1)

首先获取现有列表的大小,然后添加到当前位置

 public static void add(int position, LinkedList<String> list) {
      System.err.println(list.size());
      list.add(list.size(), "aaa");
      System.out.println(list.get(1));

     }