简单算法21.删除链表的结点
Posted 且听疯吟吖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单算法21.删除链表的结点相关的知识,希望对你有一定的参考价值。
题目:
请编写一个函数,使其可以删除某个链表中给定的(非末尾的)节点,您将只被给予要求被删除的节点。 比如:假设该链表为 1 -> 2 -> 3 -> 4 ,给定您的为该链表中值为 3 的第三个节点,那么在调用了您的函数之后,该链表则应变成 1 -> 2 -> 4 。
1.解题思路:
找到目标节点的前一个节点即可。然后将前节点的next指针指向后节点的next节点。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeElements(ListNode* head, int val) { ListNode* pList = head; ListNode* pre = NULL; if(head == NULL){ return NULL; } while(pList!=NULL){ if(pList->val == val){ if(pre == NULL){ head = pList->next; }else{ pre->next = pList->next; } }else{ pre = pList; //pList = pList->next; } pList = pList->next; } return head; } };
以上是关于简单算法21.删除链表的结点的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—19. 删除链表的倒数第 N 个结点(双指针)—day21
Leetcode刷题100天—19. 删除链表的倒数第 N 个结点(双指针)—day21
算法leetcode|19. 删除链表的倒数第 N 个结点(rust重拳出击)
算法leetcode|19. 删除链表的倒数第 N 个结点(rust重拳出击)