Вставка в упорядоченный связанный список - Java ADT - PullRequest
0 голосов
/ 20 марта 2011

Привет, это мой код для вставки элемента ... Мне сказали, что произошла ошибка при вставке в начале списка, но я не понимаю, почему или как это исправить.

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 голосов
/ 20 марта 2011

В вашем решении previous равно нулю, когда ключ для вставки меньше, чем ключ в элементе заголовка.

Сделайте специальный случай, когда новый ключ меньше ключа в голове:

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

Вам также необходимо обработать случай, в котором ключ больше, чем ключ в последнем элементе (случай result > 0).

...