• 使用javascript模拟常见数据结构(一)


      数据结构和算法可算是每个程序员的必备技能,而随着前端工作的深入,对于数据结构的知识真的是越来越需要掌握了。好了,于是乎最近看了《javascript数据结构和算法》,算是对于后面的使用C语言来学习数据结构进行一下预热。恩,这本书的内容倒是也不多,其实就是使用javascript来模拟数据结构,比如使用数组模拟队列和栈,使用对象模拟SET等等,好了,下面上内容。

      一、数组

      这个就不必多说了吧,各种编程语言里面都有的,其在内存里面连续的分布,导致其便于查询,但是不便于增删,比如你把arr是一个五项的数组,你把arr[0]去掉了,后面的四项还要往前挪一个位置。

      下面说下js数组的一些常用的方法吧。数组的增加,push,unshift。数组的删除,pop,shift,当然还有splice方法。

      数组的合并: concat。

      数组的搜索:indexOf, lastIndexOf

      数组的排序:sort(),reverse()。这里注意sort的排序,如果是字符串的话会根据ASCII 码来进行排序,可以传入函数来处理。

      输出为字符串:toString(),join()

      迭代器:every   有一个是false则返回false,否则返回true

          some   有一个是true则返回true

          forEach  迭代整个数组

          map     遍历数组,返回一个新数组

          reduce   累加

          filter     返回符合条件的元素组成的数组

      二、栈  

      是一种遵从后进先出LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近底。

       

    function Stack() {
       var items = [];
       this.push = function(element){
          items.push(element);
       };
       this.pop = function(){
          return items.pop();
       };
       this.peek = function(){
          return items[items.length-1];
       };
       this.isEmpty = function(){
          return items.length == 0;
       };
       this.size = function(){
          return items.length;
       };
       this.clear = function(){
          items = [];
       };
       this.print = function(){
          console.log(items.toString());
       };
    }

      如上所示,这样就使用数组完成了一个简单的栈结构的构建。

      三、队列

      队列是遵循FIFOFirst In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。 

      

    function Queue(){
        
        var items = [];
    
        this.enqueue = function(element){
            items.push(element);  
        }     
        
        this.dequeue = function(){
            return items.shift();
        }  
        
        this.front = function(){
            return items[0];
        }
    
        this.isEmpty = function(){
            return items.length == 0;
        } 
        
        this.clear = function(){
            items = [];
        };
    
        this.size = function(){
            return items.length;
        };
    
        this.print = function(){
            console.log(items.toString());
        };
    }

    so,这样一个队列的模拟也完成了,OK。

      

  • 相关阅读:
    UNIX环境高级编程 第9章 进程关系
    UNIX环境高级编程 第8章 进程控制
    UNIX环境高级编程 第7章 进程环境
    最小截断[AHOI2009]
    切糕[HNOI2013]
    餐巾
    happiness[国家集训队2011(吴确)]
    奇怪的道路[JXOI2012]
    王者之剑
    抵制克苏恩[Lydsy2017年4月月赛]
  • 原文地址:https://www.cnblogs.com/shicongbuct/p/6593482.html
Copyright © 2020-2023  润新知