JavaScript数据结构 持续更新中。。一周后可完结

array:

数组创建:

var troop=new Array(6);                    //创建一个长度为6的数组
var troop=new Array(2,3,5,6,4,7);

数组方法:

var str="I love javascript";
var single=str.split("");           //‘I‘,‘ ‘,‘l‘,‘o‘,.....
var mutipy=str.split(" ");        //‘I‘,‘love‘,‘javascript‘

var troop=new Array(2,5,6,8,9,4,1,2);
var index=troop.indexOf(2);    //index=0

var names=[‘jack‘,‘mike‘,‘molly‘];
var str=names.join();               //str=‘jack,mike,molly‘

var nums=[];
nums.push(3,4);
nums.shift(1,2);                      //nums=[1,2,3,4];
nums.pop();                           //nums=[1,2,3];
nums.shift();                          //nums=[2,3];
nums.splice(0,1,5,6)                //nums=[5,6,3];
对数组元素进行操作(不产生新数组)
var nums=[2,4,6,8];
function isEven(num){return num%2==0;}function square(num){return num*num;}nums.forEach(square);                //对数组所有元素平方var swit=nums.every(isEven);         //判断数组元素是否均为偶数,若是,返回true;

产生新数组:filter,map

二元数组:for(var i=0;i<5;i++)troop[i]=[];

栈和列表其实就是对数组和数组方法的封装,所以我省略不写。

链表:

    var linkLIst=function(){
        var Node=function(element){
            this.element=element;
            this.next=null;
        };
        this.length=0;
        this.head=new Node("head");                 //定义链表头,长度,同时,定义了四个方法。
        this.append=append;
        this.insert=insert;
        this.remove=remove;
        this.display=display;

        function append(element){
            var newNode=new Node(element);          //链表在末尾添加新节点,注意的是,node.next仍是node类型,故在添加新节点时要调用节点构造函数
            var thisNode=this.head;            this.length++;
            if(thisNode.element==null)              //在写循环语句或者判断语句的时候要注意,一个空节点是没有element元素的,
            {                                       //因此要先确保thisNode为非空节点,该if判断语句才能正常运行,不然会报错。
                thisNode.element=element;
            }else{
                while(thisNode.next)
                {
                    thisNode=thisNode.next;
                }
                thisNode.next=newNode;
            }
        };
        function insert(elementbe,element){
            var nodebe=this.head;
            this.length++;
            var insertNode=new Node(element);
            while(!(nodebe.element===elementbe)){
                nodebe=nodebe.next;
            };
            var nodeafter=nodebe.next;
            nodebe.next=insertNode;
            insertNode.next=nodeafter;
        };
        function remove(element){
            var nodeDelete=this.head;
            while(!(nodeDelete.next.element===element))
            {
                nodeDelete=nodeDelete.next;
            };
            var nodeAfter=nodeDelete.next.next;            //next可叠加多次
            nodeDelete.next=nodeAfter;
        };
        function display(){
            var thisNode=this.head;
            var str="";
            while(thisNode){
                str+=thisNode.element+" ";
                thisNode=thisNode.next;
            }
            return str;
        }
    };
    var newlist=new linkLIst();                          //如果调用构造函数为什么用new不太理解,可以参考上一篇博文我对this的简析
    newlist.append("1");newlist.append("2");newlist.append("3");newlist.append("4");newlist.insert("3","5")
    var str=newlist.display();
    alert(str);
时间: 2024-08-05 11:17:17

JavaScript数据结构 持续更新中。。一周后可完结的相关文章

常用集合类数据结构(持续更新中)

零.约定 1.  如果没有特殊说明,均指jdk 6,7,8一样 2.  源码分析出来的,有错误,请务必告知,谢谢 一.链表 1.  ArrayList<>() a) 基本介绍  i. 动态数组的数据结构 ii.新增时,容量超过当前容量,会新new一个数组 iii. 随机查询忧,添加删除劣 b)         常用构造函数 i.              ArrayList() jdk6初始化为容量10的数组 jdk7,8初始化为容量为0的数组(EMPTY_ELEMENTDATA) ii.  

【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包含:数组类.浏览器类.日期类.函数类.数学类.媒体类.节点类.对象类.字符串类.类型检测类.正则表达式类等内容. 使用方法 1. 引入Bable transpiler以保证支持ES6 <script type="javascript/text" src="./browser

PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/problem-sets/994805046380707840/problems 目录 (点击对应题目即可进入相应题解--小声BB--) L1-001 Hello World (5 分) L1-002 打印沙漏 (20 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5

C 语言的若干问题(持续更新中)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)

演示地址 帐号:admin 密码:admin123 请不要删除用户避免他人无法体验(文章中已经附带源码,源码开放到17讲下载) 快捷地址(QQ群37509873也有相应的下载):   第2讲源码下载  密码:wg0i 最新代码生成器+17讲源码下载 密码:n2ji SwfUpload在MVC4下多文件上传 密码:0ntz 也可以有偿获取一份最新源码联系QQ:729994997价格500 -------------------------------------------------------

nodejs学习(持续更新中)

nodejs和express的安装什么的,网上基本都有现成的了,这里有点说下, 在较早点的版本(如3.5.0) npm install -g [email protected] 后,可以直接使用 express helloWorld创建工程, 但最新express4.0版本中将命令工具分家出来了(项目地址:https://github.com/expressjs/generator),所以我们还需要安装一个命令工具,命令如下:npm install -g express-generator ##

Android 控件的一些属性--持续更新中...

归纳一些冷门又可能用到的Android控件属性 1.ListView android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到 android:drawSelectorOnTop="false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的 取消分割线/分隔线 android:divider="@null" listvi

前端面试题总结——Html5(持续更新中)

前端面试题总结--H5(持续更新中) 1.HTML5 为什么只需要写 <!DOCTYPE HTML>? HTML5 需要doctype来规范浏览器的行为,让浏览器按照它们应该的方式来运行:HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型. 2.HTML5的form如何关闭自动完成功能? 给不想要提示的 form 或某个 input 设置为 autocomplete=off. 3.HTML5 中如何嵌入音频? 当前,audio 元素支持三种音频格式:&l

前端面试题总结——HTML(持续更新中)

前端面试题总结--HTML(持续更新中) 1.什么是HTML? HTML:HyperText Markup Language超文本标记语言 2.XHTML和HTML有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的标记语言 3.简述一下你对HTML语义化的理解? html语义化让页面的内容结构化,结构更清晰,便于对浏览器.搜索引擎解析; 前端学习圈:767273102 ,从最基础的HTML+CSS+JavaScript.jQuery,Ajax,node,angula