优美的删除链表节点实现

今天在LeetCode上看到一段非常优美的删除链表节点代码

struct ListNode {
	int val;
	ListNode *next;
	ListNode(int x) : val(x), next(NULL) {}
	
};  
ListNode *removeElements(ListNode *head, int val)
{
	if (!head)
		return head;
	head->next = removeElements(head->next, val);
	return head->val == val ? head->next : head;
}

这里用的是递归的方法,

第一句,递归的终止条件。

第二句,递归调用,结果应该是下一个节点删除val值后的结果加上头节点。

第三句,处理头结点,看它是不是等于val值。

 

算法的优美体现的淋漓尽致!

点赞