class Node {
constructor(val) {
this.val = val
this.next = null
}
}
class LinkList {
constructor() {
this.length = 0
this.head = null
}
append(ele) {
let node = new Node(ele)
let current;
if(this.head == null) {
this.head = node
} else {
current = this.head
while(current.next) {
current = current.next
}
current.next = node
}
this.length++
}
insert(ele, point) {
if (point >= 0 && point < this.length) {
let node = new Node(ele)
let current = this.head
let index = 0
let prev;
if (point == 0) {
node.next = current
this.head = node
} else {
while(index < point) {
prev = current
current = current.next
index++
}
prev.next = node
node.next = current
}
this.length++
return true
} else {
return false
}
}
find(ele) {
let current = this.head
let idx = 0
if(current.val == ele) {
return 0
}
while(current.next) {
if(current.val == ele) {
return idx
}
idx++
current = current.next
}
if(current.val == ele) {
return idx
}
return -1
}
remove(ele) {
const point = this.find(ele)
let current = this.head
if(point == 0) {
this.head = current.next
} else {
let idx = 0
let prev
while(idx < point) {
prev = current
current = current.next
idx++
}
prev.next = current.next
}
this.length--
return current.val
}
print() {
let res = ''
let current = this.head
while(current) {
res += current.val + (current.next ? '->' : '')
current = current.next
}
return res
}
}
let l1 = new LinkList()
l1.append('222')
l1.append('111')
l1.append('333')
l1.append('444')
l1.remove('111')
l1.insert('gggg', 0)
l1.insert('tttt', 2)
const res = l1.print()
console.log(res)
console.log(l1.find('333'))