废话不多说,直接上代码
class Node {
constructor(element) {
this.element = element;
this.next = null;
}
}
class LinkedList {
constructor() {
this.length = 0;
this.head = null;
}
append(element) {
let node = new Node(element);
let current = this.head;
if(this.head == null) {
this.head = node;
} else {
while(current.next) {
current = current.next;
}
current.next = node;
}
}
insert(position, element) {
let node = new Node(element);
let pre;
let current = this.head;
let index = 0;
if(postion >= 0 && position <= this.length) {
if(position == 0) {
this.head = node;
node.next = current;
} else {
while(index++< position) {
pre = current;
current = current.next;
}
node.next = current;
pre.next = node;
}
this.length++;
return true;
} else {
return false;
}
}
removeAt(position) {
let current = this.head;
let pre;
let index = 0;
if (position >= 0 && position < this.length) {
if(position == 0) {
this.head = current.next;
} else {
while(index++ < positon) {
pre = current;
current = current.next;
}
pre.next = current.next;
}
this.length--;
return current.element;
} else {
return null;
}
}
indexOf(element) {
let current = this.head;
let index = 0;
while(current) {
if (current.element == element) {
return index;
}
index++;
current = current.next;
}
return -1;
}
remove(element) {
let index = this.indexOf(element);
return this.removeAt(index);
}
}