《Cracking the Coding Interview程式設計師面試金典》----連結串列中倒數第k個結點

塵封的記憶0發表於2017-04-28

題目描述

實現一個演算法,刪除單向連結串列中間的某個結點,假定你只能訪問該結點。

給定帶刪除的節點,請執行刪除操作,若該節點為尾節點,返回false,否則返回true


我覺得刪除節點分兩步,一個是刪除單向連結串列中上一個只想該節點的連結和該節點指向下一個節點的連結,

而變成第n-1個節點->next指向原先的n+1個節點。第二步就是當刪除了連結並不代表當前刪除的節點不佔用記憶體空間,

所以就要free這個空間。下面是通過的程式碼示例:

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class Remove {
public:
    bool removeNode(ListNode* pNode) {
        // write code here
        if(pNode==NULL||pNode->next==NULL)  
            return false;  
        pNode->val=pNode->next->val;  
        ListNode* ppNode=pNode->next;  
        pNode->next=ppNode->next;  
        delete ppNode;  
        return true;  
    
};

不懂的可以加我的QQ群:261035036(IT程式設計師面試寶典

群) 歡迎你到來哦,看了博文給點腳印唄,謝謝啦~~



相關文章