博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript实现双向链表
阅读量:4306 次
发布时间:2019-06-06

本文共 2803 字,大约阅读时间需要 9 分钟。


title: JavaScript实现双向链表

toc: false
date: 2018-10-07 10:11:36


img

  • append(element): 添加元素到链表尾部
  • insert(position,element): 向双向链表中某个位置插入元素
  • removeAt(position): 移除双向链表中某个位置的元素
  • getHead(): 获取双向链表的头部
  • getTail(): 获取双向链表的尾部
  • isEmpty(): 检查双向链表是否为空,为空则返回true
  • size(): 返回双向链表长度
function DoublyLinkedList() {    var Node = function (element) {        this.element = element;        this.next = null;        this.prev = null;    }    var length = 0;    var head = null;    var tail = null;        this.append = function (element) {        var node = new Node(element);        if (head === null) {            head = node            tail = node        } else {            tail.next = node;            node.prev = tail;            tail = node;        }        length++;        return true;    }    /**     * 向双向链表中某个位置插入元素     *      * @param {any} position 要插入的位置     * @param {any} element 要插入的元素     * @returns 插入成功或失败     */    this.insert = function (position, element) {        var node = new Node(element),            current = head,            previous,            index = 0;        if (position < 0 && position > length) {            return false;        }        if (position === 0) {            node.next = head            head.prev = node            head = node        } else if (position === length) {            tail.next = node;            node.prev = tail;            tail = node;        } else {            while (index++ < position) {                previous = current                current = current.next;            }            previous.next = node;            node.prev = previous;            node.next = current;            current.prev = node;        }        length++;        return true;    }    /**     * 移除双向链表中某个位置的元素     *      * @param {any} position 要移除元素的位置     * @returns 移除成功,返回移除的元素     */    this.removeAt = function (position) {        var previous,            current = head,            index = 0;        if (position < 0 && position >= length) {            return false;        }        if (position === 0) {            head = current.next;            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;    }    this.getHead = function () {        return head.element;    }    this.isEmpty = function () {        return length === 0    }    this.getTail = function () {        return tail.element;    }    this.size = function () {        return length    }}

转载于:https://www.cnblogs.com/zmj97/p/10180598.html

你可能感兴趣的文章
4 sum
查看>>
trapping rain water
查看>>
集合习题之列出有限集合所有子集
查看>>
hdu1728--------坑爹啊
查看>>
浅谈性能测试分析
查看>>
mui 结束时间不能大于开始时间
查看>>
SQL创建表格——手写代码
查看>>
1、Canvas的基本用法
查看>>
两个链表的第一个公共结点-输入两个链表,找出它们的第一个公共结点。
查看>>
Swagger+AutoRest 生成web api客户端(.Net)
查看>>
setTimeout详解
查看>>
Nginx配置指定媒体类型文件强制下载
查看>>
gdb命令中attach使用
查看>>
Koa2 静态服务及代理配置
查看>>
网络运维调查报告
查看>>
bat-bat-bat (重要的事情说三遍)
查看>>
算法题11 字符串的所有对称子串
查看>>
bzoj1058: [ZJOI2007]报表统计
查看>>
寒假作业01
查看>>
关于“using namespace std”
查看>>