这不就,真是删除链表节点的基操
ListNode* deleteNode(ListNode* head, int val) {
// 需要额外考虑的是删除 头节点、尾节点 的特殊情况
ListNode* virtual_head = new ListNode();
virtual_head->next = head;
// 尽量避免直接修改原指针
ListNode* ptr1 = head, *ptr2 = virtual_head;
while (ptr1) {
if (ptr1->val == val) {
ptr2->next = ptr1->next;
break;
}
ptr2 = ptr1;
ptr1 = ptr1->next;
}
return virtual_head->next;
}
看起来时间效率有点差