237. Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
Given linked list – head = [4,5,1,9], which looks like following:4 -> 5 -> 1 -> 9
Example 1:
Input: head = [4,5,1,9], node = 5 |
Example 2:
Input: head = [4,5,1,9], node = 1 |
Note:
- The linked list will have at least two elements.
- All of the nodes’ values will be unique.
- The given node will not be the tail and it will always be a valid node of the linked list.
- Do not return anything from your function.
Solution:
刚开始的思路是, 用被删除结点前的前一个结点prev, prev->next = node->next; 再释放node的内存。
但因为是单向链表, 只给出一个结点, 因此要删除这个结点就不能找prev结点.
将下一个结点的值赋给该结点, 该结点指向跳过下一结点, 释放下一个结点。实际上是删除了下一个结点, 但将值赋值给了当前node
/** |