203.移除链表元素
递归思路
从第一个链表元素开始等于下一个经函数操作后的链表元素
一层一层函数套进去 也就是递归操作 使得其实是从最后一个链表元素往前判断
判断当前链表元素值是否等于 val
若等于 则使得该链表元素等于下一个链表元素 返回下一个链表元素 这样就是一个删除操作
若不等于 则该链表元素不变 返回当前链表元素
以下是AC代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if(!head)//判断链表是否为空
return head;
if(head->next)
head->next = removeElements(head->next,val);//获取下一个链表元素的值 实现递归 连接了每个链表元素
return head->val == val ? head->next : head;//从后往前经判断返回的值
}
};