请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师, 是不是应该再删除时,判断一下链表为空的情况, 否则remove空链表时会报错, 因为dummyHead的next为null

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2020-02-26 02:09:15

我们的 remove 函数没有这个问题,因为初始的 if(index < 0 || index >= size) 的判断决定了删除的元素肯定在链表内。


public E remove(int index){    
    
    if(index < 0 || index >= size)    
        throw new IllegalArgumentException("Remove failed. Index is illegal.");    

    Node prev = dummyHead;    
    for(int i = 0 ; i < index ; i ++)    
        prev = prev.next;    

    Node retNode = prev.next;    
    prev.next = retNode.next;    
    retNode.next = null;    
    size --;    

    return retNode.e;    
}


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 这个方法是会出问题的,请老师仔细验证下,removeLast方法调用 remove(size - 1)时会出现 prev.next 为null
    回复 有任何疑惑可以回复我~ 2022-06-07 01:31:03
  • 请给我基于课程的代码(这一小节代码传送门:https://github.com/liuyubobobo/Play-Algorithms-and-Data-Structures/tree/master/07-Linked-List/05-Remove-Element-in-LinkedList/src) 可以复现你所说的错误的完整 main 方法。谢谢。
    回复 有任何疑惑可以回复我~ 2022-06-07 12:31:03
  • 404 Page not found...
    回复 有任何疑惑可以回复我~ 2022-06-08 21:44:42
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信