1. 程式人生 > >LintCode 372.Delete Node in a Linked List

LintCode 372.Delete Node in a Linked List

題目描述

思路 這道題讓我們刪除連結串列的一個節點,更通常不同的是,沒有給我們連結串列的起點,只給我們了一個要刪的節點,跟我們以前遇到的情況不太一樣,我們之前要刪除一個節點的方法是要有其前一個節點的位置,然後將其前一個節點的next連向要刪節點的下一個,然後delete掉要刪的節點即可。這道題的處理方法是先把當前節點的值用下一個節點的值覆蓋了,然後我們刪除下一個節點即可

/**
 * Definition of ListNode
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *         this->val = val;
 *         this->next = NULL;
 *     }
 * }
 */
class Solution { public: /* * @param node: the node in the list should be deletedt * @return: nothing */ void deleteNode(ListNode * node) { // write your code here ListNode *p = node->next; node->val = p->val; node->next = p->next;
delete p; } };
/**
 * Definition of ListNode
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *         this->val = val;
 *         this->next = NULL;
 *     }
 * }
 */


class Solution {
public:
    /*
     * @param node: the node in the list should be deletedt
     * @return: nothing
     */
void deleteNode(ListNode * node) { // write your code here node->val = node->next->val; node->next = node->next->next; } };