0

目前,我的 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

4 回答 4

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
    }
}
于 2013-06-26T09:23:20.507 回答
0

我想你可以简单地做

public void add(int position, final LinkedList<T> list) {
    for(int i = 0; i < list.size(); i++) {
        add(position++, list.get(i));
    }
}
于 2013-06-26T09:23:03.287 回答
0

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

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

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

于 2013-06-26T09:57:25.140 回答
-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));

     }
于 2013-06-26T09:30:15.803 回答