今天在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值。
算法的优美体现的淋漓尽致!