插入有序链表 - Java ADT

时间:2011-03-20 19:17:49

标签: java collections linked-list adt insertion

嗨这是我的插入项目的代码...我被告知在插入列表的开头但是不明白为什么或如何修复它时失败了。

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();

    }

1 个答案:

答案 0 :(得分:0)

在您的解决方案中,当要插入的键小于头项目中的键时,previous为空。

为新密钥设置一个特殊情况,该密钥小于头部的密钥:

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

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