2016-02-13 3 views
0

Я пытаюсь реализовать дважды связанный список для назначения класса. В настоящее время я придерживаюсь метода удаления узла с указанным индексом.Реализация метода удаления для дважды связанного списка

public void remove(int index) { 
    if (index < 0 || index > count-1) { 
     throw new ListIndexOutOfBoundsException("The index "+index+" is out of bounds."); 
    } 
    if (isEmpty()) { 
     System.out.println("List is empty"); 
     return; 
    } 

    MedicationNode curr = head; 
    int k = 0; 
    while(k < index) { 
     curr = curr.next; 
     k++; 
    } 
    if (curr.prev == null) { 
     curr.next.prev = null; 
    }else if(curr.next == null) { 
     curr = curr.prev; 
     curr.next = null; 
    }else{ 
     curr.next.prev = curr.prev; 
     curr.prev.next = curr.next; 
    }   
    count--; 
} 

метод может удалить любой заданный узел в связанном списке, кроме индекса 0. Я думаю, что проблема может быть с моим методом добавления, но им не совсем уверен.

+0

Вы должны обработать первый элемент определенным образом, потому что в этом случае вам нужно изменить переменную 'head'. – Seelenvirtuose

ответ

1

В своем первом, если условие -

if (curr.prev == null) { 
    curr.next.prev = null; 
    //Make your head of the linked list point to this node 
    head = curr.next; 
} 

Это происходит потому, что вы удаляете голову из списка, так что голова должна указывать на следующий узел в головы.

+0

Это сработало! Большое вам спасибо – kevinsangabriel

+0

Не забудьте отметить ответ, если он будет принят. –

Смежные вопросы