采用两个指针,具体如下:
function linkNode(val){
this.val = val;
this.next = null;
}
function link(){
let head = new linkNode(-1);
let len = 0;
this.append = function(lNode){
let tmpNode = head;
while(tmpNode.next !== null){
tmpNode = tmpNode.next;
}
tmpNode.next = lNode;
len++;
};
this.isExist = function(val){
let tmpNode = head;
while(tmpNode.next !== null){
if(tmpNode.next.val == val){
return true;
}
tmpNode = tmpNode.next;
}
return false;
};
this.remove = function(val){
let tmpNode1 = head;
let tmpNode2 = head.next;
while(tmpNode2 !== null){
if(tmpNode2.val == val){
tmpNode1.next = tmpNode2.next;
tmpNode2 = null;
len--;
return true;
}
tmpNode1 = tmpNode1.next;
tmpNode2 = tmpNode2.next;
}
return false;
};
this.getBN = function(n){
console.log(head);
let firstNode = head.next;
let secondNode = head.next;
let i = n;
while(i--){
if(secondNode != null){
secondNode = secondNode.next;
}else{
break;
}
}
if(i > 0){
return false;
}
while(secondNode){
firstNode = firstNode.next;
secondNode = secondNode.next;
}
return firstNode.val;
};
}
var l = new link();
for(let n =0;n<10;n++){
l.append(new linkNode(n));
}
console.log(l.getBN(4));