don't judge pre->val == cur_val, use pre->next == cur to decide whether to remove