一种怪异的节点删除方式
生活随笔
收集整理的這篇文章主要介紹了
一种怪异的节点删除方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
鏈表的節點類型是int型,給定一個鏈表中的節點node,但不給定整個鏈表的頭節點。如何在鏈表中刪除node?請實現這個函數,并分析這么做會出現哪些問題。
要求:時間復雜度O(1)。
基本思路
實現方法很簡單,令node節點的值等于下一個節點的值,之后刪除node的下一個節點即可。這樣做有很大的問題:
問題一:無法刪除最后一個節點,因為最后一個節點沒有next節點,也不能直接將最后一個節點設置成null,因為null在系統中是一個特定的區域,也就是說即使將node設置成null,node的上一個節點的next指針指向的內存區域還是node沒有設置成null時候的那個內存區域。
問題二:這種刪除方式本質上根本刪不了node節點,只是改變了node節點的值。這在實際工程中可能會帶來很大問題。比如,工程上的一個節點可能代表很復雜的結構,節點值的復制會相當復雜,或者可能改變節點值這個操作都是被禁止的。再如:工程上的一個節點代表提供服務的一個服務器,外界對每個節點都有很多依賴,不能隨便刪除其他的節點
?
?
總結
以上是生活随笔為你收集整理的一种怪异的节点删除方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单链表的选择排序
- 下一篇: 向有环的环形链表中插入新节点