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.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行 ...
随机推荐
- 转:C#整数三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别
1.int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型); 2.int.Parse(string sParameter)是个构造函数,参数类型只支持string类型; 3. ...
- Apache的httpd命令详解
Apache的httpd命令详解 来源:全栈开发者 发布时间:2012-01-03 阅读次数:10965 4 httpd.exe为Apache HTTP服务器程序.直接执行程序可启动服务器的服务. ...
- 怎么在centos中查看某个目录的树结构?
1.在ubuntu系统中默认是没有tree这个命令的,需要安装,用下面的命令就可以安装tree这个命令工具sudo apt-get install tree. 在centos中也没有,需要提前进行安装 ...
- mac osx 10.9 ftp server端口
开启 FTP Serversudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist 关闭 FTP Serversudo -s ...
- centos出现磁盘坏掉,怎么修复和检测。
当dmesg的时候,出现下面的信息说明磁盘有问题 Info fld=0x139066d0 end_request: I/O error, dev sda, sector 328230608 Buffe ...
- 使用微软的(how-old.net)构建智能门店管理系统
现在是大数据时代,每个企业都要对自己的客户有全面的认识,这样才能最准确的分析客户,做出相应的决策.在实体的门店中,对于客户的管理还是比较低级,很多客户对于企业来说是哑终端,即对于企业来说,完全不知道客 ...
- Ubuntu配置OpenGL环境
建立基本编译环境 sudo apt-get install build-essential 安装OpenGL Library sudo apt-get install libgl1-mesa-dev ...
- GDAL的RASTERIO功能
为了能快速的显示大影像,最近一直在学习GDAL,GDAL确实是一个功能强大的开源库,其核心部分数据集和波段,下面这个图很详细的描述了它们之间的关系,还有其中的细节: GDAL ...
- LogLog
https://github.com/rsyslog https://github.com/beave/sagan http://www.securitywarriorconsulting.com/l ...
- linux下维护服务器之常用命令
linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...