题目
给定一个单向链表中的一个节点,写一个方法删除该节点。
Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
思路
由于只给出了当前节点,不知道前节点,不能使用常规删除。
将下一节点的值往前移动,然后删除最后一个节点。
void deleteNode(ListNode* node) {
if (node == nullptr) return;
ListNode *tmp = node;
while (node->next != nullptr) {
node->val = node->next->val;
tmp = node;
node = node->next;
}
tmp->next = nullptr;
}
总结
看上去好像和常规不一样,拿不到链表的头节点。但可以值修改值,不删除中间节点,删除末尾节点。
网友评论