0

こんにちは、これはアイテムを挿入するための私のコードです...リストの先頭に挿入するときに失敗したと言われましたが、その理由や修正方法がわかりません。

public void put(K key, V value){
    OrderedLinkedListEntry <K,V> item = new OrderedLinkedListEntry (key, value);

    OrderedLinkedListEntry <K,V> current = head;
    OrderedLinkedListEntry <K,V> previous = null;

    if(current == null){
        head = item;
        numItems ++;
        return;
    }

    while(current != null){
        int result = key.compareTo(current.getKey());
        if(result == 0){
            current.setValue(value);
            return;
        }else if (result < 0){
                  item.setNext(current);
                  if (previous != null){
                  previous.setNext(item);
                  }
                  numItems ++;
                  return;
              }

        previous = current;
        current = current.getNext();

    }
4

1 に答える 1

0

あなたのソリューションでpreviousは、挿入するキーがヘッド項目のキーより小さい場合は null です。

新しいキーが head 内のキーよりも小さいという特殊なケースを作成します。

if (key.compareTo(head.getKey() < 0) {
   item.setNext(head);
   head = item;
   return;
}

result > 0キーが最後の項目 (ケース)よりも大きい場合も処理する必要があります。

于 2011-03-20T19:40:00.570 に答える