剛學完線性表,想出去試一試,結果沒做出來。
思路挺簡單但也挺精妙的。
題目
https://leetcode-cn.com/problems/delete-node-in-a-linked-list/
思路
因爲無法訪問刪除節點之前的節點,所以主要是將刪除的節點複製爲下一個節點,使下一個節點被刪除,即讓刪除節點的next指向下一個節點的下一個節點。相當於把刪除節點的下一個節點搬到了刪除節點的位置。
代碼
C
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
void deleteNode(struct ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
C++
/**
* 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;
}
};