Skip to main content

链表取中间节点

const head = {
'val':1,
'next':{
'val':2,
'next':{
'val':3,
'next':{
'val':4,
'next':{
'val':5,
'next':undefined
}
}
}
}
}
const getMiddleNode = function (node) {

// 慢指针
let middle = node;
// 快指针
let fast = node.next;

// 利用fast和fast.next
// 如果链表长度为奇数,则返回中间节点
// 如果链表长度为偶数,则有两个中间节点,这里返回第一个
while(fast && fast.next){
middle = middle.next;
fast = fast.next.next;
}

return middle
};

console.log(getMiddleNode(head))