问题:关于“双链表”实现过程中尾指针在使用递归的方式实现 增加/删除 节点时的处理方式。
来源: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 不用动。
继续加油!:)
相似问题