<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script>
//【数据结构 JavaScript版】- web前端开发精品课程【红点工场】 --javascript-- 链表实现
// 对象存储的方式
var linkSheet = function() {
var head = null;
var length = 0;
var Node = function(element) {
this.element = element;
this.next = null;
}
// 链表尾部添加元素
this.append = function(element) {
var node = new Node(element)
if (head == null) {
head = node;
} else {
var current = head;
while (current.next) {
current = current.next;
}
}
length++;
}
//链表插入元素
this.insert = function(position, element) {
if (position >= -1 && position < length) {
var node = new Node(element);
if (position == 0) {
var current = head;
head = node;
head.next = current;
} else {
var index = 0;
var current = head;
var previous = null;
while (index < position) {
previous = current;
current = current.next;
index++;
}
previous.next = node;
node.next = current;
}
length++;
}
}
// 移除下标元素
this.removeAt = function(position){
if(position>-1&&position<length){
if(position==0){
var current = head;
head = current.next;
}
else{
var current = head;
var previous = null;
var index = 0;
while(index<position){
previous = current;
current = current.next;
index++;
}
previous.next= current.next;
}
length--;
return current;
}
return null;
}
// 获取元素下标
this.indexOf = function(element){
var current = head;
var index = 0;
while(current){
if(current.element==element){
return index;
}
current= current.next;
index++;
return index;
}
return -1;
}
// 移除元素
this.remove = function(element){
return this.removeAt(this.indexOf(element));
}
// 判断为空
this.isEmpty = function(){
return length==0;
}
// 获取长度
this.size = function(){
return length;
}
// 返回头部
this.getHead = function(){
return head;
}
}
</script>
</body>
</html>