2019年10月6日
LeetCode 203. 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
解析:
根据给定的元素删除与元素相等的节点。
定义一个指针temp,初始时temp=head,判断temp->next是否是给定值,如果是则把temp->next->next赋给temp->next。因为最初从temp->next开始判断,所以最后要判断一下head的数值是否与给定元素相等。这里通过比较temp->next,省下了再定义当前节点前一个节点指针,相当于temp即为匹配节点的前驱。
具体代码如下:
/**
* 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 head;
ListNode* temp = head;
ListNode *pre = NULL;
while(temp->next != NULL)
{
if(temp->next->val == val)
temp->next = temp->next->next;
else
temp = temp->next;
}
return head->val == val ? head->next:head;
}
};
运行结果:

One Comment