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

来源:4-5 从链表中删除元素

qq_skywalker_23855555

2020-02-25

Node delNode = prev.next; // 此时会报错
写回答

1回答

liuyubobobo

2020-02-26

我们的 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
4
liuyubobobo
回复
中南小蜜罐
看一下你是不是复制错了地址(比如是不是多复制了一个括号),我这里测试链接是没有问题的。但链接其实就是课程的代码,我的 point 是按照课程的方式,为我提供一个测试代码,可以复现你说的错误。就像这一小节视频中 9:20 写的测试代码一样。
2022-06-08
共4条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程