链表
哨兵思想
链表类别的题目,到最后都是对链表的CRUD,通过添加哨兵,可以减少边界的情况的讨论。
链表:1-2-3
删
没有哨兵,删除"1","2","3"都对应不同的操作
-
删除"1":先记住2,然后修改1的指针。
-
删除"2":记住1和3。修改1的指针指向3,修改2的指针。
-
删除"3":修改2的指针。
如果引入哨兵,删除1,2,3都可以转换成一个操作:记住当前的前驱和后驱节点,前驱节点指向后节点。从而减少了边界情况的讨论
链表类别的题目,到最后都是对链表的CRUD,通过添加哨兵,可以减少边界的情况的讨论。
链表:1-2-3
没有哨兵,删除"1","2","3"都对应不同的操作
删除"1":先记住2,然后修改1的指针。
删除"2":记住1和3。修改1的指针指向3,修改2的指针。
删除"3":修改2的指针。
如果引入哨兵,删除1,2,3都可以转换成一个操作:记住当前的前驱和后驱节点,前驱节点指向后节点。从而减少了边界情况的讨论