給定頭結點和指定結點,刪除指定結點在時間複雜度為o(1)
思路:該節點的前驅無從著手,但後繼容易獲得。若該節點非末尾結點,則可以把後繼結點複製給該節點。**:node.data=node.next.data;
node.next=node.next.next;
若該節點為末尾結點,即node.next==null時。需從頭遍歷,此時時間複雜度為o(n)。
綜上時間複雜度為:(o(1)*(n-1)+o(n))/n=o(1)。
**如下:
package datastructtion.linear;
/** * 給定頭結點和指定結點,刪除指定結點在時間複雜度為o(1)
* 思路:該節點的前驅無從著手,但後繼容易獲得。
* 若該節點非末尾結點,則可以把後繼結點複製給該節點。
* **:
* node.data=node.next.data;
node.next=node.next.next;
若該節點為末尾結點,即node.next==null時。需從頭遍歷,此時時間複雜度為o(n)
綜上時間複雜度為:(o(1)*(n-1)+o(n))/n=o(1)
* @author xiucai
*/public class singlelinkedlist_deletenode
p.next=null;
node=null;
}else
} /**
* 測試方法
* @param args
*/public static void main(string args)
system.out.println(list);
noderemove=list.head.next;
while(remove.next!=null)
system.out.println(remove.next);
removenode(list.head, remove);
system.out.println(list);
}}
面試題 O 1 時間複雜度刪除鍊錶節點
注意 由於本次 中有較為詳細的題目描述與解題分析,此處就不在重複說明 includeusing namespace std include include 題目 一 在o 1 時間內刪除鍊錶節點 給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 時間內刪除該節點。鍊錶節點與函式的定義如下 s...
在時間複雜度O 1 內刪除單鏈表節點
題目 給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在o 1 時間內刪除該節點。鍊錶節點定義如下 public class listnode分析 有三種情況 要刪除的節點不是尾節點,時間複雜度為o 1 單鏈表中只有乙個節點,刪除頭節點,時間複雜度為o 1 單鏈表中有多個節點,要刪除的為尾節點,時間...
面試題 在O 1 時間複雜度刪除鍊錶節點
給定乙個單鏈表中的表頭和乙個等待被刪除的節點 非表頭或表尾 請在在o 1 時間複雜度刪除該鍊錶節點。並在刪除該節點後,返回表頭。樣例 給定 1 2 3 4,和節點 3,返回 1 2 4。372 delete node in the middle of singly linked list 刪除鍊錶節...