删除链表中间节点

/*
最原始的思路,第一次遍历链表获得链表长度,第二次遍历到链表长度/2,进行删除操作
细细思考的思路,
0个节点,不删除
1个节点,不删除
2个节点,删除第一个节点
3个节点,删除第二个节点
4个节点,删除第二个节点
5个节点,删除第三个节点
链表长度每增加2,要删除的节点位置增加1
所以,只需一次遍历就可以
*/

var linkList = {
    val:1,
    next:{
        val:2,
        next:{
            val:3,
            next:{
                val:4,
                next:{
                    val:5
                }
            }
        }
    }
};

var removeMidNode = function(head){
    if(head === undefined || head.next === undefined){
        return head;
    }
    if(head.next.next === undefined){
        return head.next;
    }
    var pre = head;
    var cur = head.next.next;
    while(cur.next !== undefined && cur.next.next !== undefined){
        pre = pre.next;
        cur = cur.next.next;
    }
    pre.next = pre.next.next;
    return head;
};

var result = removeMidNode(linkList);
console.log(result);

你可能感兴趣的:(删除链表中间节点)