js-实现双向链表

来源:互联网 发布:html首页源码 编辑:程序博客网 时间:2024/06/06 07:41

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。

js代码如下:

function DoublyLinkedList() {var Node = function (element) {this.element = element;this.next = null;this.prev = null;};var length = 0;var head = 0;var tail = null;this.insert = function (position, element) {if (position >= 0 && position <= length) {var node = new Node(element),current = head,previous,index = 0;if (position === 0) {if (!head) {head = node;tail = node;} else {node.next = current;current.prev = node;head = node;}}else if (position === length) {current = tail;current.next = node;node.prev = current;tail = node;} else {while (index++ < position) {previous = current;current = current.next;}node.next = current;previous.next = node;current.prev = node;node.prev = previous;}length++;return true;} else {return false;}};this.removeAt = function (position) {if (position > -1 && position <= length) {var current = head,previous,index = 0;if (position === 0) {head = current.next;if (length == 1) {tail = null;} else {head.prev = null;}} else if (position === length - 1) {current = tail;tail = current.prev;tail.next = null;} else {while (index++ < position) {previous = current;current = current.next;}previous.next = current.next;current.next.prev = previous;}length--;return current.element;} else {return null;}};this.toString = function () {//输出链表中的值var current = head,string = '';while (current) {string += current.element + " ";current = current.next;}return string;};this.getHead=function(){return head;}}var list=new DoublyLinkedList();list.insert(0,12);list.insert(1,23);list.insert(2,54);list.insert(3,23);list.insert(4,2);console.log(list.toString());console.log(list.getHead().next);


1 0
原创粉丝点击