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。

为新键小于头部中的键做一个特殊情况:

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

您还需要处理密钥大于最后一项(result > 0案例)中的密钥的情况。

于 2011-03-20T19:40:00.570 回答