问题:关于“双链表”实现过程中尾指针在使用递归的方式实现 增加/删除 节点时的处理方式。

来源:2-10 更多和链表相关的话题

怦怦

2020-08-29 16:30:34

我在实现双链表过程中,像实现add/remove/removeElement这些方法的过程中使用了递归的方式,所以对如何保持tail的更新没有头绪,老师是否能给点提示。

    谢谢回答!

写回答

1回答

liuyubobobo

2020-08-30

首先,tail 应该是一个类成员变量,所以,在递归的过程中,随时都可以访问 tail。


在 add 的过程中,如果发现 add 的节点是链表最后一个节点,则 tail 应该指向这个新添加的节点,否则 tail 不用动;


在 remove 的过程中(不管是按照索引 remove 还是按照值 remove),如果发现 remove 的是链表的最后一个节点,则 tail 应该指向这个删除节点的 prev,否则 tail 不用动。


继续加油!:)

1

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2638 学习 · 1091 问题

查看课程