1

我想设计一个链表到另一个链表,到目前为止我在 MyLinkedList 类中有这个方法:

public void addList(int index, E e){
        if(index == 0){
            addFirst(e);
        } else if (index >= size){
            addLast(e);
        }
        else{
            Node<E> current = head;
            for(int i = 1; i < index; i++){
                current = current.next;
            }
            Node<E> temp = current.next;
            current.next = new Node<E>(e);
            (current.next).next = temp;
            size++;
        }
    }

我被困在方法本身上,我的主程序有两个看起来像这样的 LinkedList:

MyLinkedList<String> strings1 = new MyLinkedList<String>();
        strings1.add("java");
        strings1.add("language");
        strings1.add("cooler");
        strings1.add("noob");
        System.out.println(list1);

        MyLinkedList<String> strings2 = new MyLinkedList<String>();
        strings2.add("artistic");
        strings2.add("cereal");
        strings2.add("bowl");
        System.out.println(list2);

然后我想将string2的链表添加到string1的链表中。我该怎么做?我曾想过使用

strings1.addList(2, strings2); 

但它没有用,它不会让我将strings2添加到strings1我想如果我完成它的输出会是这样的:java,语言,艺术,谷物,碗,冷却器,菜鸟或类似的东西,请帮忙!

4

3 回答 3

3

您的类中有一个接受单个节点的方法,只需根据第二个列表的需要多次调用它:

例如

void addAll(int index, MyList<> second_list)
{
  for(Object o : second_list)
  {
    addList(index, o);
    ++index;
  }
}

除非您的类实现了正确的接口,否则上述基于范围的 for 循环可能不起作用,我很懒 - 使用您的类支持的正常迭代......

于 2012-11-16T16:24:03.753 回答
0

使用 方法addAll(int index, Collection c)将两个列表相加。

strings1.addAll(startIndex, strings2);

您还必须为您的 MyLinkedList 类实现 List 接口。您的 MyLinkedList 类的外观也不是很清楚?

于 2012-11-16T16:18:58.993 回答
0

最简单的方法......

public void insertList(int index, List<String> list) {
    Collections.reverse(list);
    for (String str : list) {
        add(index, str);
    }
}
于 2012-11-16T16:27:43.597 回答