<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>双向链表</title> </head> <body> <script> function DoubleList() { this.head = null; this.tail = null; this.length = 0; function Node(data) { this.data = data; this.prev = null; this.next = null; } DoubleList.prototype.append = function (data) { var newNode = new Node(data); if (this.length == 0) { this.head = newNode; } else { var current = this.head; while (current.next) { current = current.next; } current.next = newNode; } this.length += 1; }; DoubleList.prototype.backwardString = function (data) { //定义变量 var current = this.head; var resultString = ""; while (current) { resultString += current.data + " "; current = current.next; } return resultString; }; DoubleList.prototype.forwardString = function (data) { //定义变量 var current = this.tail; var resultString = ""; while (current) { resultString += current.data + " "; current = current.prev; } return resultString; }; DoubleList.prototype.toString = function (data) { //定义变量 return this.backwardString(); }; DoubleList.prototype.insert = function (position, data) { if (position < 0 || position > this.length) return false; var newNode = new Node(data); if (this.length == 0) { this.head = newNode; this.tail = newNode; } else { if (position == 0) { this.head.prev = newNode; newNode.next = this.head; this.head = newNode; } else if(position==this.length) { newNode.prev=this.tail this.tail.next=newNode this.tail=newNode }else{ var current=this.head var index=0 while(index++<position){ current=current.next } newNode.next=current newNode.prev=current.prev current.prev.next=newNode current.prev=newNode } } this.length+=1 return true }; DoubleList.prototype.get = function (position, data) { if (position < 0 || position > this.length) return null; //获取元素 var current=this.head var index=0 while(index++<position){ current=current.next } return current.data } DoubleList.prototype.indexOf = function (data) { var current = this.head; var index = 0; //开始查找 while (current) { if (current.data == data) { return index; } current = current.next; index += 1; } return -1; } } </script> </body> </html>