單鏈表的刪除
阿新 • • 發佈:2017-05-21
style cnblogs fun 如果 else 頭節點 var next let
單鏈表的刪除,就是找到鏈表節點的前面一個節點,將其與待刪節點的下一個節點連接,待刪節點斷鏈
function remove(head,val){ var pre = head; while(pre.next && pre.next.val != val){ pre = pre.next; } if(pre == null){ return; } if(pre.next != null){ pre.next = pre.next.next; } }
另一種刪除方法,已知鏈表的頭節點和待刪節點,將待刪節點的值賦為下一個節點的值,如果節點為末尾節點(非null),則需找到其前面的節點,將其與待刪節點斷鏈
總體時間復雜度仍然為O(1)
function delete(head,node){ if(node == null){ return; } if(node.next != null){ node.val = node.next.val; var temp = node.next; node.next = node.next.next; temp.next = null; temp = null; } else{ if(head == node){ head= null; } else{ var pre = head; while(pre.next && pre.next.val != node.val){ pre = pre.next; } if(pre! = null){ pre.next = null; } } } }
單鏈表的刪除