1. 程式人生 > >單鏈表的刪除

單鏈表的刪除

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; } } } }

單鏈表的刪除