博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用javascript模拟常见数据结构(一)
阅读量:5076 次
发布时间:2019-06-12

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

  数据结构和算法可算是每个程序员的必备技能,而随着前端工作的深入,对于数据结构的知识真的是越来越需要掌握了。好了,于是乎最近看了《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。

 

  

转载于:https://www.cnblogs.com/shicongbuct/p/6593482.html

你可能感兴趣的文章
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>