实现一个列表

script

var booklist = new List();

    booklist.append('jsbook');
booklist.append('cssbook');
booklist.append('htmlbook'); console.log(booklist.length()) //3
console.log(booklist.toString()) //["jsbook", "cssbook", "htmlbook"]

TODO

这个列表又很多不完善的地方,比如

booklist.append(['cbook','c++book'])  // 这样的就没合理的处理掉 ,以及去重判断等。

代码如下:

/**
* 列表的实现, 数据结构与算法JavaScript描述 第三章
* @constructor
*/
function List(){
this.listSize = 0;
this.pos = 0;
this.dataStore = []; //初始化一个空数组来保存列表元素
this.clear = clear;
this.find = find;
this.toString = toString;
this.insert = insert;
this.append = append;
this.remove = remove;
this.front = front;
this.end = end;
this.prev = prev;
this.next = next;
this.length = length;
this.currPos = currPos;
this.moveTo = moveTo;
this.getElement = getElement;
this.contains = contains; //清空列表
function clear(){
delete this.dataStore;
this.dataStore.length = 0;
this.listSize = this.pos = 0;
}
//查找元素位置
function find(element){
for (var i = 0; i < this.dataStore.length; ++i) {
if (this.dataStore[i] == element) {
return i;
}
}
return -1;
}
//某元素之前插入元素
function insert(element,after){
var p = this.find(after)
if(p>-1){
this.dataStore.splice(p+1,0,element)
++this.listSize;
return true;
}
return false; }
//插入元素
function append(element){
this.dataStore[this.listSize++] = element;
}
//移除元素
function remove(element){
var f = this.find(element)
if(f>-1){
this.dataStore.splice(f,1)
this.listSize--;
return true;
}
return false;
}
//把位置挪到最前面
function front(){
this.pos = 0;
}
//把位置挪到坐后面
function end(){
this.pos = (this.listSize-1)
}
//把位置上移一个节点
function prev(){
if (this.pos > 0) {
--this.pos;
}
}
//把位置下移一个节点
function next(){
if (this.pos < this.listSize-1) {
++this.pos;
}
}
//返回当前位置
function currPos(){
return this.pos;
}
//移到某一个位置
function moveTo(position){
this.pos = position;
}
//获得当前位置的元素
function getElement(){
return this.dataStore[this.pos]
}
//查找当前元素 是否在列表中
function contains(element){
for(var i=0;i<this.dataStore.length;i++){
if(this.dataStore[i]==element){
return true;
}
}
return false;
}
//tostring
function toString() {
return this.dataStore;
}
//返回该列表的长度
function length(){
return this.listSize;
} }

列表的实现-----数据结构与算法JavaScript描述 第三章的更多相关文章

  1. 读书笔记《数据结构与算法JavaScript描述》第一章

    第一章JavaScript的编程环境和模型 1.2JavaScript编程实践 1.2.1 声明和初始化变量 JavaScript中的变量默认为全局变量,如果初始化未被声明的变量,该变量就成了一个全局 ...

  2. 《数据结构与算法JavaScript描述》

    <数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...

  3. 翻阅《数据结构与算法javascript描述》--数组篇

    导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...

  4. 数据结构与算法javascript描述

    <数据结构与算法javascript描述>--数组篇 导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScri ...

  5. 《数据结构与算法JavaScript描述》中的一处错误

    最近在看<数据结构与算法JavaScript描述>这本书,看到选择排序这部分时,发现一个比较大的错误. 原书的选择排序算法是这样的: function selectionSort() { ...

  6. 数据结构与算法 Javascript描述

    数据结构与算法系列主要记录<数据结构与算法 Javascript描述>学习心得

  7. 读后感:数据结构与算法JavaScript描述

    本书看完,对常见的数据结构与算法从概念上有了更深入的理解. 书中关于数组.栈和队列.链表.字典.散列.集合.二叉树.图.排序.检索.动态规划.贪心算法都有详细的介绍.算是一本不错的学习书籍. 栈和队列 ...

  8. 数据结构与算法JavaScript描述——列表

    1.列表的抽象数据类型定义   2.实现列表类: 2.1 append:给列表添加元素: 2.2 remove: 从列表中删除元素: 2.3 find方法: 2.4 length:列表中有多少个元素: ...

  9. 数据结构与算法JavaScript描述——使用队列

    1.使用队列:方块舞的舞伴分配问题 前面我们提到过,经常用队列模拟排队的人.下面我们使用队列来模拟跳方块舞的人.当 男男女女来到舞池,他们按照自己的性别排成两队.当舞池中有地方空出来时,选两个队 列中 ...

随机推荐

  1. Centos6.5升级gcc for qt5.3.1

    1.升级GCC CentOS6.5内置的GCC版本为4.4,而Qt5.2.1则需要4.8.2的支持(支持C++ 11特性),因此,必须先升级GCC wget http://ftp.tsukuba.wi ...

  2. aix Mysql安装 Oracle官方教程

    http://dev.mysql.com/doc/refman/5.1/en/aix-installation.html   (aix Mysql安装 Oracle官方教程)

  3. WinForm 窗体与窗体相互嵌套

    只要将要被潜逃的的窗体的TopLeve设置为Flase即可像普通的控件一样,被添加到另外一个窗体中,TopLeve:是否为顶级窗口,下面来看代码: public partial class TTFor ...

  4. SQL Server 获取服务器信息

    最近做了一个小工具,里面涉及到一些取SQL Server 服务器信息的一些东西,找了好久,找到一个不错的,贴出来分享. 系统函数 SERVERPROPERTY ( propertyname ) 包含要 ...

  5. C# DataTable转实体 通用方法【转】

    public static T GetEntity<T>(DataTable table) where T : new()    {        T entity = new T();  ...

  6. [原理][来源解析]spring于@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关联

    Spring 捆绑Hibernate. 夹: 一.  1. Spring 怎样处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSe ...

  7. 扑克k,你知道的人物吗?

    在扑克牌中,黑桃K——大卫王(以色列联合王国第二任国王):红桃K——查里曼大帝(法兰克国王,后加冕为罗马人的皇帝):梅花K——亚历山大大帝(马其顿帝国国王):方块K——凯撒大帝(罗马共和国终生执政官) ...

  8. datagrid指定行合并导出

    导出代码: public void GridViewToExcel(GridView ctrl, string FileType, string FileName) { HttpContext.Cur ...

  9. iOS判断并使用百度地图 高德地图 导航 (使用URI,不集成sdk)

    [objc] view plaincopy  1. BOOL hasBaiduMap = NO;   2.         BOOL hasGaodeMap = NO;   3.            ...

  10. static和extern关键字 对变量的作用

    本文目录 • 一.在Java中,全局变量的定义没有严格的位置规定 • 二.在C语言中,全局变量定义的位置是有限制的 • 三.重复定义同一个变量 • 四.不同源文件中的同名变量 • 五.static关键 ...