# LC 237. Delete Node in a Linked List
### [Problem link](https://leetcode.com/problems/delete-node-in-a-linked-list/)
###### tags: `leedcode` `python` `c++` `medium` `Linked List`
There is a singly-linked list <code>head</code> and we want to delete a node <code>node</code> in it.
You are given the node to be deleted <code>node</code>. You will **not be given access** to the first node of <code>head</code>.
All the values of the linked list are **unique** , and it is guaranteed that the given node <code>node</code> is not the last node in the linked list.
Delete the given node. Note that by deleting the node, we do not mean removing it from memory. We mean:
- The value of the given node should not exist in the linked list.
- The number of nodes in the linked list should decrease by one.
- All the values before <code>node</code> should be in the same order.
- All the values after <code>node</code> should be in the same order.
**Custom testing:**
- For the input, you should provide the entire linked list <code>head</code> and the node to be given <code>node</code>. <code>node</code> should not be the last node of the list and should be an actual node in the list.
- We will build the linked list and pass the node to your function.
- The output will be the entire list after calling your function.
**Example 1:**
<img alt="" src="https://assets.leetcode.com/uploads/2020/09/01/node1.jpg" style="width: 400px; height: 286px;" />
```
Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
```
**Example 2:**
<img alt="" src="https://assets.leetcode.com/uploads/2020/09/01/node2.jpg" style="width: 400px; height: 315px;" />
```
Input: head = [4,5,1,9], node = 1
Output: [4,5,9]
Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.
```
**Constraints:**
- The number of the nodes in the given list is in the range <code>[2, 1000]</code>.
- <code>-1000 <= Node.val <= 1000</code>
- The value of each node in the list is **unique** .
- The <code>node</code> to be deleted is **in the list** and is **not a tail** node.
## Solution 1 - Linked List
#### Python
```python=
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
node.val = node.next.val
node.next = node.next.next
```
#### C++
```cpp=
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
};
```
>### Complexity
>| | Time Complexity | Space Complexity |
>| ----------- | --------------- | ---------------- |
>| Solution 1 | O(1) | O(1) |
## Note
直接換值