给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
循环终止条件:while(cur->next !=NULL )
class Solution {
public:
ListNode* deleteNode(ListNode* head, int val) {
ListNode* dummyhead = new ListNode(0);//必须创建新空间吗?因为这个指针的内存空间需要分配
dummyhead->next = head;
ListNode* cur = dummyhead;
while(cur->next !=NULL ){//终止条件判断
if(cur->next->val != val) cur = cur->next;
else{
ListNode* temp = cur->next;
cur->next = cur->next->next;
temp = nullptr;
delete temp;
break;
}
}
return dummyhead->next;
}
};
时间复杂度:O(n)
空间复杂度:O(1)