前言
LintCode 是专注代码面试的在线评测系统,有很多代码题,可以用 Java、C++、Python 在线答题,我觉得还不错,就决定把做一做这些题,然后把题目的实现、优化思路写下来,一来是为了有更深的理解,二来是讨论一下还有没有更好的方法。
问题
LintCode:删除链表中的元素
描述
删除链表中等于给定值 val 的所有节点。
样例
给出链表 1->2->3->3->4->5->3 和 val = 3,你需要返回删除 3 之后的链表: 1->2->4->5 。
链表的数据结构
1 | struct ListNode { |
实现 - C++
1 | class Solution { |
总结
简单题不需要太多分析,注意几个细节就可以:
- 返回时要返回头指针,所以要使用另一个指针遍历。
- 删除节点不能只是跳过,一定 要用
delete释放内存。 - 删除头节点时,头指针会改变,返回值 一定 要改成新的头指针。
- 删除尾节点时,必须 将前一个节点的
next置为NULL。如果只是将尾节点delete并置为NULL,那么前一个节点的next就成了一个野指针。
本文链接:删除链表中的元素
版权声明:本文章采用CC BY-NC-SA 3.0 CN许可协议进行许可。转载请注明出处!