标签:
删除链表中指定数值的元素,考虑头指针、返回。
/** * 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* newHead = new ListNode(36); newHead->next = head; ListNode* pre = newHead; ListNode* cur = head; while(cur!=NULL) { if(cur->val == val) { cur = cur->next; pre->next = cur; } else { cur = cur->next; pre = pre->next; } } return newHead->next; } };
一开始没有想过用递归写,Discussion提供了如下写法,很简洁。先递归到链表尾部,再逐层返回。
/** * 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==NULL) return NULL; head->next = removeElements(head->next, val); return head->val == val ? head->next : head; } };
[LeetCode笔记]-203-Remove Linked List Elements
标签:
原文地址:http://www.cnblogs.com/xajhzdfbb/p/4841235.html