在單個鏈表中,我們可以用一個指向它的指針來刪除一個節點。 這可以通過將下一個節點數據複製到當前節點直到達到最終結果來實現。鏈表:如何刪除最後一個節點,我們在哪裏有指向單個鏈表中最後一個節點的指針
但是,如何通過持有並知道指向自己的指針來刪除最後一個節點呢?
-Thanks
在單個鏈表中,我們可以用一個指向它的指針來刪除一個節點。 這可以通過將下一個節點數據複製到當前節點直到達到最終結果來實現。鏈表:如何刪除最後一個節點,我們在哪裏有指向單個鏈表中最後一個節點的指針
但是,如何通過持有並知道指向自己的指針來刪除最後一個節點呢?
-Thanks
當我們刪除節點,這意味着我們釋放由指針不是指針本身指向的內存。因此,在最後一個節點的情況下可以做同樣的事。
即 ptr = addressof(最後一個節點),它不等於指針的地址。
在單鏈表中,最後一個節點必須指向NULL。 這裏真正的挑戰是將NULL設置爲最後一個,而單個鏈表中只有一個節點。 struct node {int data; struct node * link;假設x,y,z是單鏈表中的3個節點。 ptr指向Z節點。 在刪除ptr之前,我們需要在節點「Y」中設置NULL。 –
這通常是不可能的。您需要最後一個節點之前的節點地址。該節點應該將它的next
指針設置爲NULL
。最後一個節點不能直接從單個鏈表中的最後一個節點訪問。
但是,如果您有權訪問head
節點,則可以再次遍歷列表以獲取最後一個節點之前的節點。
您還需要最後一個節點之前的節點地址。這個節點應該把它的下一個指針設置爲NULL。如果你沒有訪問'head'節點,那麼刪除是不可能的。 –
我同意你的意見。 我在接受高通採訪時遇到了這個問題。採訪者聲稱我們可以做到這一點。 –