js数据结构之列表的详细实现方法
* 列表用于存放数据量较少的数据结构
* 当数据量较大时,不需要对其进行查找、排序的情况下,使用列表也比较方便。
本数据结构在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数据结构之列表的详细实现方法的更多相关文章
- js数据结构之集合的详细实现方法
数据结构中的集合,类似于数学中常说的集合,是一类数据的群组.集合与集合之间还存在交集,并集,补集的运算. ***集合为无序,集合内元素不重复 ***js的set基于数组, 使用SetClass为类名, ...
- js数据结构之二叉树的详细实现方法
数据结构中,二叉树的使用频率非常高,这得益于二叉树优秀的性能. 二叉树是非线性的数据结构,用以存储带有层级的数据,其用于查找的删除的性能非常高. 二叉树 数据结构的实现方法如下: function N ...
- 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法)
咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...
- JS数据结构的栈和队列操作
数据结构:列表.栈.队列.链表.字典.散列.图和二叉查找树! 排序算法:冒牌.选择.插入.希尔.归并和快速! 查找算法:顺序查找和二分查找 在平时工作中,对数组的操作很是平常,它提供了很多方法使用,比 ...
- JS数据结构之 Map
JS数据结构之 Map Map介绍 Map(映射)是ES6引入的一种数据结构.这是一种存储键值对列表很方便的方法,类似于其他编程语言的哈希表. HashMap(哈希表),也叫做散列表.是根据关键码值 ...
- C#开发微信门户及应用(4)--关注用户列表及详细信息管理
在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继续写这个系列的博客了,并不是对这个方面停止了研究,而是继续深入探索这方面的技术,为了更好的应用起 ...
- PHP函数可变参数列表的具体实现方法介绍
PHP函数可变参数列表可以通过_get_args().func_num_args().func_get_arg()这三个函数来实现.我们下面就对此做了详细的介绍. AD:2014WOT全球软件技术峰会 ...
- 如何发布一个自定义Node.js模块到NPM(详细步骤)
咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...
- jquery jtemplates.js模板渲染引擎的详细用法第三篇
jquery jtemplates.js模板渲染引擎的详细用法第三篇 <span style="font-family:Microsoft YaHei;font-size:14px;& ...
随机推荐
- 【洛谷P3411】字串变换
题解:普通的 BFS 没什么可说的,字符串处理是这道题的难点,同时需要注意哈希判重. 另外,对于 \(string\) 类来说,学到了一个 push_back((char)) 操作. c++strin ...
- Meshgrid函数的基本用法(转载)
在Numpy的官方文章里,meshgrid函数的英文描述也显得文绉绉的,理解起来有些难度. 可以这么理解,meshgrid函数用两个坐标轴上的点在平面上画网格. 用法: [X,Y]=meshgrid( ...
- get请求中的url encode问题
首先发表一下感慨,Python的requests模块确实太简便,省却了很多的转码等等等等的问题,但这也是缺点,对于我这种基础不好的同学来说让我少知道了许多本来应该知道的东西. url encode: ...
- 数学:二次剩余与n次剩余
二次剩余求的是这个东西 如果给定x,再给定若干个大的质数p,如果结果a相同,那么x是完全平方数? 给出别人的二次剩余的代码: /*poj 1808 题意: 判断平方剩余,即判断(x^2)%p=a是否有 ...
- [转载]JavaScript异步编程助手:Promise模式
http://www.csdn.net/article/2013-08-12/2816527-JavaScript-Promise http://www.cnblogs.com/hustskyking ...
- ASP.Net巧用窗体母版页
背景:每个网页的基本框架结构类似: 浏览网站的时候会发现,好多网站中,每个网页的基本框架都是一样的,比如,最上面都是网站的标题,中间是内容,最下面是网站的版权.开发提供商等信息: 在这些网页中,表头. ...
- HDU 4712 Hamming Distance(随机算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4712 解题报告:输入n个数,用十六进制的方式输入的,任意选择其中的两个数进行异或,求异或后的数用二进制 ...
- 【配置】Spring Struts配置信息
- C#并行计算 Parallel.Foreach&Parallel.For
Parallel.For(int fromInclude, int toExclude, Action<int> body) 栗子: Parallel.For(0, 10, (i) =&g ...
- 【Python】exe2shellcode,shellcode2exe
用python写这类程序真简洁,要是用C++又不知道得多写多少行代码了. exe2shellcode #! /usr/bin/env python # -*- coding: utf-8 -*- im ...