![链表结构示意图](https://i-blog.csdnimg.cn/blog_migrate/64793402d442bb8059ccd189717dce98.png)
单链表
function LinkList(){
this.size = 0
this.head = new Node("我是头", null)
this.unshift = element => {
let node = new Node(element)
let nextNode = this.find(0)
if(this.size === 0) {
this.head.pointerField = node
node.pointerField = null
++this.size
} else {
this.insert(1, element)
}
}
this.push = element => {
let node = new Node(element)
let lastNode = this.find(this.size + 1)
node.pointerField = null
lastNode.pointerField = node
++this.size
}
this.insert = (position, element) => {
let curNode = this.find(position)
let nextNode = this.find(position+1)
let node = new Node(element)
node.pointerField = nextNode
curNode.pointerField = node
++this.size
}
this.remove = position => {
let cNode = this.find(position)
cNode.pointerField = cNode.pointerField.pointerField
--this.size
}
this.find = (position) => {
let count = 1
let node = this.head
while (count < position) {
node = node.pointerField
++count
}
return node
}
function clear() {
this.head.pointerField = null
}
}
function Node(dataField, pointerField) {
this.dataField = dataField
this.pointerField = pointerField
}
let linkList = new LinkList()
linkList.push("我是4")
linkList.push("我是4")
linkList.push("我是4")
linkList.push("我是4")
linkList.unshift("我是2")
linkList.unshift("我是1")
linkList.insert(3, "我是3")
linkList.remove(3)
console.log(linkList.find(0));