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

メソッド自体に行き詰まっています。メイン プログラムには、次のような 2 つの LinkedLists があります。

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、language、artistic、cereal、bowl、cooler、noobなど、助けてください!

4

3 に答える 3

3

単一のノードを受け入れるクラスにメソッドがあり、2 番目のリストに必要なだけこれを呼び出すだけです。

例えば

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

上記の範囲ベースの for ループは、クラスが適切なインターフェイスを実装していない限り機能しない可能性があります。私は怠け者です。クラスがサポートする通常の反復を使用してください...

于 2012-11-16T16:24:03.753 に答える
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 に答える
0

メソッドaddAll(int index, Collection c)を使用して、2 つのリストを一緒に追加します。

strings1.addAll(startIndex, strings2);

また、クラス MyLinkedList に List インターフェースを実装する必要があります。また、MyLinkedList クラスがどのように見えるかが明確ではありませんか?

于 2012-11-16T16:18:58.993 に答える