* 列表用于存放数据量较少的数据结构
* 当数据量较大时,不需要对其进行查找、排序的情况下,使用列表也比较方便。

本数据结构在node环境下运行,需要对node有个基本是了解。

1. listSize:  列表长度

2. pos   当前位置

3. getLength  获取列表的长度

4. toString  返回列表的字符串

5.getElement  获取当前位置的元素

6. insert    在指定位置的后面插入

7. append   在列表的末尾插入

8. remove  删除元素

9.front  把当前位置移到首位

10 end  把当前位置移到末尾

11. prev 把当前位置前移一位

12. next 把当前位置后移一位

13. currentPos 获取当前位置

14  moveTo   把当前位置移动到指定位置

15  find  找到指定的元素

16 loop   列表的遍历器(index为索引,loopItem为对应的元素)

下面通过fs模块将制定txt文档中的内容装进列表中:

列表对象数据如下:

function List () {
this.listSize = 0; // 列表长度
this.pos = 0; // 当前位置
this.clear = clear; // 清空列表
this.getLength = getLength; // 获取列表的长度
this.toString = toString; // 返回列表的字符串形式
this.getElement = getElement; // 返回当前位置的元素
this.insert = insert; //在当前位置元素的后面插入元素
this.append =append; // 在列表的末尾添加元素
this.remove = remove; // 从列表中删除当前元素
this.front = front; // 将列表的当前位置移动到第一个元素位置
this.end =end; // 将列表的当前位置移动到最后一个元素位置
this.prev = prev; // 将列表的当前位置向前移动一位
this.next = next; // 将列表的当前位置向后移动一位
this.currentPos = currentPos; // 返回列表的当前位置
this.moveTo = moveTo; // 将当前位置移动到指定位置
this.find = find; // 获取指定元素的位置
this.loop = loop; // 列表的遍历器
this.list = []; function clear () {
this.list.length = 0;
this.listSize = 0;
this.pos = 0;
} function getLength () {
return this.list.length;
} function toString () {
return this.list;
} function getElement () {
return this.list[this.pos];
} function insert (item, after) {
var index = this.find(after)
if(index){
this.list.splice(index+1, 0, item);
this.listSize++;
return 1;
}
return -1
} function append (item) {
this.list.push(item);
this.listSize++;
} function remove (ele) {
for (var i=0; i<this.list.length; i++) {
console.log(this.list[i]);
if(this.list[i]==ele){
this.list.splice(i, 1);
console.log("remove");
return 1;
}
} console.log("not remove"); this.listSize--;
return -1; } function front () {
this.pos = 0;
} function end () {
this.pos = this.list.length-1;
} function prev () {
this.pos--;
} function next () {
this.pos++;
} function currentPos () {
return this.pos;
} function moveTo (index) {
this.pos = index;
} function find (ele) {
for (var i = 0; i<this.list.length; i++) {
if(this.list[i] == ele) {
return i
}
}
return -1;
} function loop (cb) {
for(this.front();this.currentPos()<this.list.length;this.next()){
var loopItem = this.getElement();
var index = this.currentPos();
(function(index, loopItem){
cb(index, loopItem);
})(index, loopItem)
}
}
}

.txt文件如下:

(1) The Shawshank Redemption(《肖申克的救赎》)
(2) The Godfather(《教父》)
(3) The Godfather: Part II(《教父2》)
(4) Pulp Fiction(《低俗小说》)
(5) The Good, the Bad and the Ugly(《黄金三镖客》)
(6) 12 Angry Men(《十二怒汉》)
(7) Schindler’s List(《辛德勒名单》)
(8) The Dark Knight(《黑暗骑士》)
(9) The Lord of the Rings: The Return of the King(《指环王:王者归来》)
(10) Fight Club(《搏击俱乐部》)
(11) Star Wars: Episode V - The Empire Strikes Back(《星球大战5:帝国反击战》)
(12) One Flew Over the Cuckoo’s Nest(《飞越疯人院》)
(13) The Lord of the Rings: The Fellowship of the Ring(《指环王:护戒使者》)
(14) Inception(《盗梦空间》)
(15) Goodfellas(《好家伙》)
(16) Star Wars(《星球大战》)
(17) Seven Samurai(《七武士》)
(18) The Matrix(《黑客帝国》)
(19) Forrest Gump(《阿甘正传》)
(20) City of God(《上帝之城》)

利用fs读取后将每一项装入列表中:

const fs = require("fs");

var listData = fs.readFileSync("movie.txt", "utf-8").split("\r\n");

listData.forEach(function(item){
movieList.append(item);
})

js数据结构之列表的详细实现方法的更多相关文章

  1. js数据结构之集合的详细实现方法

    数据结构中的集合,类似于数学中常说的集合,是一类数据的群组.集合与集合之间还存在交集,并集,补集的运算. ***集合为无序,集合内元素不重复 ***js的set基于数组, 使用SetClass为类名, ...

  2. js数据结构之二叉树的详细实现方法

    数据结构中,二叉树的使用频率非常高,这得益于二叉树优秀的性能. 二叉树是非线性的数据结构,用以存储带有层级的数据,其用于查找的删除的性能非常高. 二叉树 数据结构的实现方法如下: function N ...

  3. 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法)

    咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...

  4. JS数据结构的栈和队列操作

    数据结构:列表.栈.队列.链表.字典.散列.图和二叉查找树! 排序算法:冒牌.选择.插入.希尔.归并和快速! 查找算法:顺序查找和二分查找 在平时工作中,对数组的操作很是平常,它提供了很多方法使用,比 ...

  5. JS数据结构之 Map

    JS数据结构之 Map Map介绍 Map(映射)是ES6引入的一种数据结构.这是一种存储键值对列表很方便的方法,类似于其他编程语言的哈希表. HashMap(哈希表),也叫做散列表.是根据关键码值 ...

  6. C#开发微信门户及应用(4)--关注用户列表及详细信息管理

    在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继续写这个系列的博客了,并不是对这个方面停止了研究,而是继续深入探索这方面的技术,为了更好的应用起 ...

  7. PHP函数可变参数列表的具体实现方法介绍

    PHP函数可变参数列表可以通过_get_args().func_num_args().func_get_arg()这三个函数来实现.我们下面就对此做了详细的介绍. AD:2014WOT全球软件技术峰会 ...

  8. 如何发布一个自定义Node.js模块到NPM(详细步骤)

    咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...

  9. jquery jtemplates.js模板渲染引擎的详细用法第三篇

    jquery jtemplates.js模板渲染引擎的详细用法第三篇 <span style="font-family:Microsoft YaHei;font-size:14px;& ...

随机推荐

  1. Ansible Role

    Ansible Role 专题总揽 https://www.jianshu.com/p/1be92c3f65ec lework 关注 2017.03.02 12:57* 字数 629 阅读 1439评 ...

  2. SQL提高查询效率【in、not in、between、like】等条件讲述

    在使用SQL语句查询数据库记录时,如果要查询相同的内容,有着不同的多种方法. 仍然,尽管使用多种方法可以得到相同的结果,但是,如果您使用不同的方法,在执行效益上是截然不同的.因此,我们得仔细考虑,如果 ...

  3. Mac系统 MAMP 集成环境下搭建 Redis

    之前由于嫌弃 mac 下命令行搭建 php+mysql 环境太复杂,给自己挖了一个大坑 就是偷懒使用了名为 MAMP 的一键集成安装包 好用是好用,但是等你需要添加点模块和功能的时候就傻眼了 这几天在 ...

  4. Spark记录-Scala异常处理与文件I/O

    Scala的异常处理类似许多其他语言(如Java).它不是以正常方式返回值,方法可以通过抛出异常来终止. 但是,Scala实际上并没有检查异常. 当您想要处理异常时,要像Java一样使用try {.. ...

  5. Sublime Text 2 绿化与汉化 [Windows篇]

    其实 ST3 已经出了很久了,可是我这个人恋旧,一直钟爱 ST2,所以就选择她了.最近我的 ST2 越来越卡,甚至有时候输入都会延迟1秒,所以打算自己搞个绿化版. 打开 Sublime Text 官网 ...

  6. 【三分钟视频教程】iOS开发中 Xcode 报 apple-o linker 错误的#解决方案#

      [三分钟视频教程]iOS开发中 Xcode 报 apple-o linker 错误的#解决方案#   同样的道理,指向同一库文件的代码语句如果重复书写,即使重复书写所在的文件名字不同,同样会造成这 ...

  7. C 语言结构体之点运算符( . )和箭头运算符( -> )的区别

    很多时候,在对结构体进行相应的编码时,时而发现是用点运算符( . ),时而是用箭头运算符( -> ):那么这两者之间的使用有什么区别么? 相同点:两者都是二元操作符,而且右边的操作数都是成员的名 ...

  8. Burp-Suit之Interder

    登陆页面:http://localhost/pentest/brute/login.php 设置代理,使用Burp截断: 发送到Intruder进行爆破,这里我先说明一下Intruder页面 Inte ...

  9. 用《舌尖2》去理解C#中的多态和开闭原则

    昨天晚上看了<舌尖上的中国2>第一集,特别的感人,尤其是看到帮别人割麦子的麦客,一亩地开价200,雇主只肯给100,脸上的那种纠结和无可奈何.还有长着大眼睛的跳跳鱼,很可爱,不过最终还是被 ...

  10. 树莓派编译安装opencv3 (2019.1.6更新)

    一.更新系统 sudo apt-get update sudo apt-get upgrade sudo rpi-update #重启系统 sudo reboot 二.安装依赖库及程序 sudo ap ...