functionprepend(head, value){return{
value: value,
next: head
}}
取出链表第n个节点的值:
functionnth(head, n){var count =0var p = head
while(count < n && p.next !=null){
count++
p = p.next
}if(count != n){return undefined
}return p.value
}
取出链表第n个节点的值,递归版。
functionnth(head, n){if(head ==null){return undefined
}if(n ===0){return head.value
}returnnth(head.next, n -1)}
向链表的第n个位置添加一个新节点。
functioninsert(head, n, value){var node ={
value: value,
next:null}if(n ===0){
node.next = head
return node
}//处理添加到第0个位置的情况if(head ==null){return node
}//处理链表为空的情况var p = head
for(var i =0; i < n -1; i++){
p = p.next
}
node.next = p.next
p.next = node
return head
}
向链表的第n个位置添加一个新节点,递归版。
functioninsert(head, n, value){var node ={
value: value,
next:null}if(head ===null){return node
}if(n ==0){
node.next = head
return node
}
head.next =insert(head.next, n -1, value)return head
}
删除链表第n个位置上的节点:
functionremove(head, n){if(!head){returnnull}if(n ===0){return head.next
}var p = head
for(var i =0; i < n -1; i++){
p = p.next
}
p.next = p.next.next
return head
}