javascript 数据结构和算法读书笔记 > 第三章 列表
1. 结构分析
列表首先要有以下几个属性:
listSize 长度
pos 当前位置
dataStore 数据
我们要通过以下方法对上面三个属性进行操作:
length() 获取长度 | getPos() 获取当前位置 | toString() 打印list内容
add(ele) 顺序添加元素 | insert(newEle, afterEle) 在某元素后插入元素 | remove(ele) 删除某元素
clear() 清空列表 | find(ele) 查询元素位置 | get(index) 根据位置获取元素 | contain(ele) 是否包含某元素
prev() 下标前移一位 | next() 下标后移一位 | front() 定位到头部 | end() 定位到尾部
2. 实现:
function List(){
this.listSize = 0;
this.dataStore = [];
this.pos = 0;
this.length = function(){
return this.listSize;
};
this.getPos = function(){
return this.pos;
};
this.prev = function(){
this.pos--;
};
this.next = function(){
this.pos++;
};
this.front = function(){
this.pos = 0;
return 0;
};
this.end = function(){
this.pos = this.listSize;
return this.listSize;
};
this.find = function(ele){
for(var i=0; i<this.listSize; i++){
if(this.dataStore[i] === ele){
return i;
}
}
return -1;
};
this.add= function(ele){
this.dataStore[this.listSize++] = ele;
};
this.insert = function(ele, afterEle){
var index = this.find(afterEle);
if(index > -1){
this.dataStore.splice(index, 0, ele);
this.listSize++;
return true;
}else{
return false;
}
};
this.remove = function(ele){
var index = this.find(ele);
if(index > -1){
this.dataStore.splice(index, 1);
this.listSize--;
return true;
}
return false;
};
this.clear = function(){
delete this.dataStore;
this.dataStore = [];
this.listSize = this.pos = 0;
};
this.contains = function(ele){
if(this.find(ele) > -1){
return true;
}else{
return false;
}
};
this.get = function(index){
return this.dataStore[index];
};
this.toString = function(){
return this.dataStore.toString();
};
}
3. 应用:
var users = ['Jenny', 'Penny', 'Tenny', 'Anny', 'Lily'];
var list = new List();
for (var i = 0; i <users.length - 1; i++) {
list.add(users[i]);
}
for(list.front(); list.getPos()<list.length(); list.next()){
console.info(list.getPos() + ":" + list.get(list.curPos()));
}
javascript 数据结构和算法读书笔记 > 第三章 列表的更多相关文章
- javascript 数据结构和算法读书笔记 > 第五章 队列
队列是一种列表,但是它只能够在队尾插入元素,在队首删除元素.队列用于存储按照顺序排列的数据,先进先出.而栈则是后入栈的元素反而被优先处理. 实际中一般被应用在进程池.排队操作上面. 1. 队列的操作 ...
- javascript 数据结构和算法读书笔记 > 第四章 栈
1. 对栈的操作 栈是一种特殊的列表,栈中的元素只能通过列表的一端进行访问,即栈顶.类似于累起一摞的盘子,只能最后被放在上面的,最先能被访问到. 就是我们所说的后入先出(LIFO). 对栈主要有入栈p ...
- javascript 数据结构和算法读书笔记 > 第二章 数组
这章主要讲解了数组的工作原理和其适用场景. 定义: 一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量. javascript数组的特殊之处: jav ...
- javascript 数据结构和算法读书笔记 > 第一章 javascript的编程环境和模型
1.变量的声明和初始化 必须使用关键字 var,后跟变量名,后面还可以跟一个赋值表达式. var name; var age = 5; var str = 'hello'; var flg = fal ...
- 《Linux内核设计与分析》第六周读书笔记——第三章
<Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...
- 《Javascript高级程序设计》读书笔记(1-3章)
第一章 JavaScript简介 1.1 JavaScript简史 略 1.2 JavaScript实现 虽然 JavaScript 和 ECMAScript 通常都被人们用来表达相同的含义,但 Ja ...
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...
- 《CSS3实战》读书笔记 第三章:选择器:样式实现的标记
第三章:选择器:样式实现的标记 选择器的魔力在于,让你完全实现对网页样式的掌控.不同的选择器可以用在不同的情况下使用.总之把握的原则是:规范的编码,根据合理地使用选择器,比去背选择器的定义有价值的多. ...
- 《linux内核设计与实现》读书笔记第三章
第3章 进程管理 3.1 进程 1.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行 ...
随机推荐
- DECLARE CONTINUE HANDLER FOR NOT FOUND
1.解释: 在mysql的存储过程中经常会看到这句话:DECLARE CONTINUE HANDLER FOR NOT FOUND. 它的含义是:若没有数据返回,程序继续,并将变量IS_FOUND设为 ...
- 【Android类型SDK测试(一)】认识Android类型的 SDK
(一)SDK是个什么东东 接触软件相关行业的同学都应该知道,SDK(即 Software Development Kit),软件开发包.其作用就是为开发某些软件提供一些便利的东西,包括工具 集合,文档 ...
- 在Windows XP下手动安装Apache+MySQL+PHP环境 要点
在整个wamp环境搭建中,本质的工作如下: 1,配置系统对php中dll文件能默认处于调用状态.在windos下,对dll文件系统默认处于调用状态的,有两种采用的方式.第一种是:把需要调用dll文件复 ...
- HeadFirst设计模式读书笔记(3)-装饰者模式(Decorator Pattern)
装饰者模式:动态地将责任附件到对象上.若要扩展功能,装饰者提东了比继承更有弹性的替代方案. 装饰者和被装饰对象有相同的超类型 你可以用一个或者多个装饰者包装一个对象. 既然装饰者和被装饰对象有相同的超 ...
- :gAudit
http://www.doc88.com/p-0794369847693.html http://baike.baidu.com/link?url=pcOUfBpILuEAPFrBSsSU-6Vzg3 ...
- 如何实现Linux下的U盘(USB Mass Storage)驱动
如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...
- android 自定义AlertDialog(一段)
java: final AlertDialog dialog = new AlertDialog.Builder(mContext) .create(); dialog.setCancelable(f ...
- jquery $ dollar符号用法总结
参考:https://github.com/chyingp/blog/blob/master/jquery/jQuery%E6%BA%90%E7%A0%81-%E7%BE%8E%E5%85%83$%E ...
- redhat 6.3 64位安装中文输入法全过程记录
首先,修改/etc/profile文件,在末尾增加两行: export LC_ALL="zh_CN.UTF-8" export LANG="zh_CN.UTF-8&quo ...
- sa命令从/var/account/pacct原始记账数据文件读取信息并汇总
sa命令从/var/account/pacct原始记账数据文件读取信息并汇总