C++實現LeetCode(237.刪除鏈表的節點)
[LeetCode] 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.
Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.
這道題讓我們刪除鏈表的一個節點,更通常不同的是,沒有給我們鏈表的起點,隻給我們瞭一個要刪的節點,跟我們以前遇到的情況不太一樣,我們之前要刪除一個節點的方法是要有其前一個節點的位置,然後將其前一個節點的next連向要刪節點的下一個,然後delete掉要刪的節點即可。這道題的處理方法是先把當前節點的值用下一個節點的值覆蓋瞭,然後我們刪除下一個節點即可,代碼如下:
C++ 解法:
class Solution { public: void deleteNode(ListNode* node) { node->val = node->next->val; ListNode *tmp = node->next; node->next = tmp->next; delete tmp; } };
Java 解法:
public class Solution { public void deleteNode(ListNode node) { node.val = node.next.val; node.next = node.next.next; } }
到此這篇關於C++實現LeetCode(237.刪除鏈表的節點)的文章就介紹到這瞭,更多相關C++實現刪除鏈表的節點內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- C++實現LeetCode(25.每k個一組翻轉鏈表)
- C++實現LeetCode(203.移除鏈表元素)
- C++實現LeetCode(160.求兩個鏈表的交點)
- C++實現LeetCode(141.單鏈表中的環)
- C++實現LeetCode(109.將有序鏈表轉為二叉搜索樹)