1. 程式人生 > >O(1)刪除連結串列節點

O(1)刪除連結串列節點

題目

給定單向連結串列的頭指標和某節點指標,定義一個函式在O(1)時間刪除該節點

思路

複製,將待刪除結點的下一個節點資料複製給帶刪除節點,然後刪除待刪除節點的下一個節點,需要考慮待刪除節點為尾節點,或連結串列僅有一個節點

程式碼

void deletedelNode(Node head, Node delNode){
        if(null==delNode||null==head)
            return;
        if(head==delNode)
            head=null;
        if(null!=delNode.next
){ delNode.value = delNode.next.value; delNode.next = delNode.next.next; }else{ Node node1 = head; while(node1.next.next!=null){ node1 = node1.next; } node1.next=null; } }