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
- js-实现双向链表
- 实现双向链表
- 双向链表实现
- 双向链表实现
- 双向链表实现
- 双向链表实现
- 双向链表实现
- JAVA实现双向链表
- C#实现双向链表
- JAVA实现双向链表
- C#实现双向链表
- 双向链表的实现
- C#实现双向链表
- 双向链表(C++实现)
- 双向链表的实现
- 双向链表的实现
- 双向链表的实现
- Java实现双向链表
- STM32F107 以太网 + RL-TCPnet
- 下载opengl的glut.h头文件和库
- 几个JavaScript的浏览器差异处理问题
- Unity Shader.Find 找不到内置shader
- Fresco介绍 - 一个新的android图片加载库
- js-实现双向链表
- OpenStack商用需要跨过的坎 -- 3. 存储系统的选择和实现
- __cplusplus
- IOS代理模式(监听器模式)
- Mysql常用命令
- CCNA Cloud CLDFND 210-451 QUIZ: Server Virtualization
- [iOS]FFmpeg框架在iOS平台上的编译和使用
- 安卓开发之百度地图定位
- ajax 对 Json 格式的解析