#Leetcode# 203. Remove Linked List Elements
https://leetcode.com/problems/remove-linked-list-elements/
Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6 Output: 1->2->3->4->5
递归代码:
/** * 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) { if(!head) return NULL; head -> next = removeElements(head -> next, val); return head -> val == val ? head -> next : head; } };
非递归代码:
/** * 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 *dummy = new ListNode(-1), *pre = dummy; dummy -> next = head; while(pre -> next) { if(pre -> next -> val == val) { ListNode *t = pre -> next; pre -> next = t -> next; t -> next = NULL; delete t; } else pre = pre -> next; } return dummy -> next; } };
被链表支配的上午