单链表的删除

Posted 等风来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表的删除相关的知识,希望对你有一定的参考价值。

单链表的删除,就是找到链表节点的前面一个节点,将其与待删节点的下一个节点连接,待删节点断链

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

 

以上是关于单链表的删除的主要内容,如果未能解决你的问题,请参考以下文章

单链表的删除

单链表的整表删除

(王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)

数据结构--单链表简单代码实现(总结)

单链表~增删查改(附代码)~简单实现

单链表的基本操作(创建,删除,插入,逆置)