《剑指Offer》-18-删除链表的节点

这不就,真是删除链表节点的基操

	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;
	}

看起来时间效率有点差

posted @ 2023-02-22 16:40  YaosGHC  阅读(15)  评论(0编辑  收藏  举报