2016-02-13 100 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。我想这个问题可能是我的add方法,但即时通讯真的不知道。

+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

请将答案标记为接受,如果它工作。 –