class Node {
constructor(data) {
this.data = data
this.next = null
}
}
class LinkNode{
constructor() {
this.head = null
this.count = 0
}
push(data) { //从末尾添加
let node = new Node(data)
if(!this.head) {
// 头结点为空
this.head = node
} else {
let current = this.head
while(current.next) {
current = current.next
}
current.next = node
}
this.count++
}
get(index) { //查找某一项
if(index >= this.count) {
return undefined
} else {
let current = this.head
for(let i =0; i< index; i++) {
current = current.next
}
return current.data
}
}
set(index, data) { //设置、修改某一项
if(index >= this.count) {
return false
} else {
let current = this.head
for(let i =0; i< index; i++) {
current = current.next
}
current.data = data
return true
}
}
remove(index) { //删除某一项
if(index >= this.count) {
return false
} else {
let current = this.head
let previous = null
for(let i =0; i< index; i++) {
previous = current
current = current.next
}
previous.next = current.next
this.count--
}
}
insert(index, data) { //从中间的摸个位置添加一项
if(index >= this.count) {
return false
} else {
let node = new Node(data)
let current = this.head
let previous = null
for(let i =0; i< index; i++) {
previous = current
current=current.next
}
previous.next = node
node.next=current
this.count++
return true
}
}
}
let link = new LinkNode()
link.push(1)
link.push(2)
link.push(3)
console.log(link)
查找某一项
console.log(link.get(2)) // 3
修改某一项的值
link.set(2,‘a‘)
删除某一项
link.remove(1)

在某个位置添加一项
link.insert(2,‘b‘)