zoukankan      html  css  js  c++  java
  • js 数据结构----链表

    // 链表
            function LinkedList() {
                var Node = function (element) { // {1}
                    this.element = element;
                    this.next = null;
                };
                var length = 0; // {2}
                var head = null; // {3}
                // 尾部添加
                this.append = function (element) {
                    var node = new Node(element), current;
                    if (head === null) {
                        head = Node
                    } else {
                        current = head
                        while (current.next) {
                            current = current.next
                        }
                        current.next = node
                    }
                    length++
                };
                // 指定位置添加
                this.insert = function (position, element) {
                    //检查越界值
                    if (position >= 0 && position <= length) { //{1}
                        var node = new Node(element),
                            current = head,
                            previous,
                            index = 0;
                        if (position === 0) { //在第一个位置添加 node.next = current; //{2}
                            head = node;
                        } else {
                            while (index++ < position) { //{3}
                                previous = current;
                                current = current.next;
                            }
                            node.next = current; //{4}
                            previous.next = node; //{5}
                        }
                        length++; //更新列表的长度
                        return true;
                    } else {
                        return false; //{6}
                    }
                };
                // 特定位置移除
                this.removeAt = function (position) {
                    //检查越界值
                    if (position > -1 && position < length) { // {1}
                        var current = head, // {2}
                            previous, // {3}
                            index = 0; // {4}
                        //移除第一项
                        if (position === 0) { // {5}
                            head = current.next;
                        } else {
                            while (index++ < position) { // {6}
                                previous = current;     // {7}
                                current = current.next; // {8}
                            }
                            //将previous与current的下一项链接起来:跳过current,从而移除它
                            previous.next = current.next; // {9}
                        }
                        length--; // {10}
                        return current.element;
                    } else {
                        return null; // {11}
                    }
                };
                //移除
                this.remove = function (element) {
                    var index = this.indexOf(element);
                    return this.removeAt(index);
                };
                //返回元素 在列表中的索引
                this.indexOf = function (element) {
                    var current = head, //{1}
                        index = -1;
                    while (current) { //{2}
                        if (element === current.element) {
                            return index;       //{3}
                        }
                        index++;                //{4}
                        current = current.next; //{5}
                    }
                    return -1;
                };
                // 是否为空
                this.isEmpty = function () {
                    return length === 0;
                };
                // 元素个数
                this.size = function () {
                    return length;
                };
    
                this.toString = function () {
                    var current = head, //{1}
                        string = '';    //{2}
                    while (current) {   //{3}
                        string = current.element; //{4}
                        current = current.next;   //{5}
                    }
                    return string
                };
                this.print = function () { };
                this.getHead = function () {
                    return head;
                };
            }
  • 相关阅读:
    CloudFlare防护下的破绽:寻找真实IP的几条途径
    用Log Parser Studio分析IIS日志
    Log Parser 2.2 + Log Parser Lizard GUI 分析IIS日志示例
    wordPress Development
    MyISAM 与 InnoDB 的区别
    ubuntu安装wiz笔记
    chown命令
    (转载)我们工作到底为了什么
    DS_Store 是什么文件
    Linux命令 ,在当前目录下查找一个,或者多个文件
  • 原文地址:https://www.cnblogs.com/vali/p/9604207.html
Copyright © 2011-2022 走看看