【问题标题】:Inserting into an ordered linked list - Java ADT插入有序链表 - Java ADT
【发布时间】:2011-03-20 19:17:49
【问题描述】:

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

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

    }

【问题讨论】:

  • previous 在要插入的键小于头项中的键时为空。

标签: java collections linked-list adt insertion


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    相关资源
    最近更新 更多