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.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行 ...
随机推荐
- canvas入门
<html> <head> <script> window.onload=function(){ var canvas=document.getElementByI ...
- linux学习笔记之系统标准:POSIX,ISO C...
一.POSIX,ISO C,Single UNIX Specification的概念. 1,POSIX:Portable Operating System Interface.可移植操作系统接口.期望 ...
- java 简单的文件上传
一.文件上传原理: 1.文件上传的前提: a.form表单的method必须是post b.form表单的enctype必须是multipart/form-data(决定了POST请求方式,请求正文的 ...
- 引用 - PHP手册笔记
引用是什么 PHP中的引用意味着,用不同的变量名访问同一变量内容,类似于Unix的文件名和文件本身(变量名是目录条目,变量内容是文件本身,即用不同的目录条目访问同一文件),可以看做Unix文件系统中的 ...
- 03-树1. List Leaves (25)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- Unix/Linux环境C编程入门教程(32) 环境变量那些事儿
1. getenv() putenv()setenv()函数介绍 getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdli ...
- EasyUI两种动态添加tab Iframe页面的方法
/** 动态添加tab-----方式一 **/ function addIframeTab(titleTxt,href,icon) { $('#mytabs').tabs('addIframeTab' ...
- Stackoverflow上人气最旺的10个Java问题(转ImportNew)
本文转自:http://www.importnew.com/16841.html 写的确实太好了 1.为什么两个(1927年)时间相减得到一个奇怪的结果? 如果执行下面的程序,程序解析两个间隔1秒的日 ...
- nginx配置方法
nginx配置的代码: user www www; worker_processes 8; error_log /data111/logs/nginx/nginx-error.log crit; pi ...
- STL入门
STL入门 STL的组成 六大组件 容器container 算法algorithm 迭代器iterator 仿函数function object 适配器adaptors 空间配制器allocator ...