编辑代码

//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
// console.log("Hello JSRUN!   \n\n         - from NodeJS .");

const findFirstNode = (nodeList)=>{
    //TODO write your impl here
    if(nodeList.length === 0){
        console.log('emtpy list')
        return
    }
    const iteratedNodes=[]    

    function findNextNode(startNode,nodes){
        const prevNodeIndex= nodes.findIndex(node=>{
          return  node.nextId===startNode.id
        })        

        const isEnd=prevNodeIndex<0
        
        if(isEnd){            
            return startNode.id
        }
        
        let currentNode = nodes[prevNodeIndex]        
        const isDeadLoop=iteratedNodes.map(o=>o.id).includes(currentNode.id)
        
        if(isDeadLoop){
            console.log('circular chain table found!')
            return
        }

        iteratedNodes.push(currentNode)      
      
        return findNextNode(currentNode,nodes)
    }

    return findNextNode(nodeList[0],nodeList)
}
const list = [{"id":3,"nextId":0},{"id":1,"nextId":2},{"id":2,"nextId":3}];
//输出 1
console.log(findFirstNode(list));

const circularList = [{"id":3,"nextId":1},{"id":1,"nextId":2},{"id":2,"nextId":3}];
//输出 circular chain table found!
console.log(findFirstNode(circularList));