前言
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许可协议进行许可。转载请注明出处!