LeetCode Algorithm 剑指 Offer 18. 删除链表的节点
Posted Alex_996
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 剑指 Offer 18. 删除链表的节点相关的知识,希望对你有一定的参考价值。
题目链接:剑指 Offer 18. 删除链表的节点
Ideas
算法:迭代
数据结构:链表
思路:这道题其实不需要什么双指针,一个指针就可以了。首先声明一个指针cur指向head,然后在保证cur不为空并且cur -> next也不为空的前提下,不断循环,判断cur -> next -> val是否与给定的val相等,如果相等的话,将cur -> next置为cur -> next -> next,相当于删除了cur -> next。这种做法有一个bug,那就是如果head -> val就是我们要删除的val,那么是没法处理的,所以针对head要单独处理一下。
Code
C++
class Solution
public:
ListNode* deleteNode(ListNode* head, int val)
if (head -> val == val)
return head -> next;
ListNode *cur = head;
while (cur && cur -> next != nullptr)
if (cur -> next -> val == val)
cur -> next = cur -> next -> next;
cur = cur -> next;
return head;
;
以上是关于LeetCode Algorithm 剑指 Offer 18. 删除链表的节点的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Algorithm 剑指 Offer 24. 反转链表
LeetCode Algorithm 剑指 Offer 18. 删除链表的节点
LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表
LeetCode Algorithm 剑指 Offer 22. 链表中倒数第k个节点