1.单向链表
class Node{
constructor(element,next){
this.element = element
this.next = next
}
}
class LinkedList{
constructor(){
this.head = null;
this.size = 0;
}
add(index,element){
if(arguments.length === 1){
element = index
index = this.size
}
if(index < 0 || index > this.size) throw new Error('越界')
if(index === 0 ){
// 取到老的头
let head = this.head
this.head = new Node(element,head)
}else{
// 找到当前索引的上一个
let prevNode = this.getNode(index -1)
prevNode.next = new Noe(element,prevNode.next)
}
this.size++
}
getNode(index){
let current = this.head;
for(let i =0; i< index;i++){
current = current.next
}
return current
}
}
const ll = new LinkedList()
ll.add(0,100)
ll.add(0,200)
ll.add(300)
ll.add(1,500)
console.dir(ll,{depth:1000})
|