列表:

  • 定义:一组有序的数据;
function List() {
this.listSize = 0;
this.pos = 0;
this.dataStore = [];
this.find = find;
.........................
}
  • 方法:

    • append:添加数据

function append(element) { this.dataStore[this.listSize++] = element; }

    • find:查找元素://indexOf
 function find(element) {
for(var i=0; i < this.dataStore.length; ++i) {
if(this.dataStore[i] === element) {
return 1;
}
}
return -1;
}
    • remove:删除元素;
 function  remove(element) {
var foundAt = this.find(element);
if(foundAt > -1) {
this.dataStore.splice(foundAt,1);
--this.listSize;
return true;
}
return false;
}
    • length:返回元素个数;
function length() {
return this.listSize;
}
    • toString:显示元素;
function toString() {
return this.dataStore;
}
    • insert:插入元素;
function insert(elem,after) {
var insertPos = this.find(elem);
if(insertPos > -1) {
this.dataStore.splice(insertPos+1,0,elem); //
++this.listSize;
return true;
}
return false;
}
    • clear:清空所有元素;
function clear() {
delete this.dataStore;
this.dataStore = [];
this.listSize = this.pos = 0;
}
    • contains:判断元素;
function contains(elem) {
for(var i = 0; i < this.dataStore.length; ++i) {
if(this.dataStore[i] === elem) {
return true;
}
}
return false;
}
    • 遍历:
function front() {
this.pos = 0; //pos范围[0-listSize-1]
} function end() {
this.pos = this.listSize - 1;
} function prev() {
if(this.pos > 0) {
--this.pos;
}
} function next() {
if(this.pos < this.listSize) {
++this.pos; //
}
} function currPos() {
return this.pos;
} function moveTo(position) {
this.pos = position;
} function getElement() {
return this.dataStore[this.pos];
}

使用迭代器访问列表:迭代器只是用来在列表上随意移动,而不应该和任何为列表增加或删除的方法一起使用;

demo

js:数据结构笔记2---列表的更多相关文章

  1. js:数据结构笔记4--队列

    队列是一种特殊的列表,数据结构为FIFO: 定义: function Queue() { this.dataStore = []; this.enqueue = enqueue; this.deque ...

  2. js:数据结构笔记3--栈

    栈是一种特殊的列表,数据结构为LIFO: 定义: function Stack() { this.dataStore = []; this.top = 0; this.push = push; thi ...

  3. js:数据结构笔记12--排序算法(2)

    高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版: 首先设置间隔数组,然后按照每个间隔,分别进行排序: 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0] ...

  4. js:数据结构笔记10--图和图算法

    图:是由边和定点的集合组成:  按照图的定点对是否有序可以分为:有向图和无向图:  路径:所有顶点都由边连接构成:路径长度为第一个定点到最后一个顶点之间的数量:  环:指向自身的顶点,长度为0:圈:至 ...

  5. js:数据结构笔记7--哈希表

    哈希表(散列表):通过哈希函数将键值映射为一个字典; 哈希函数:依赖键值的数据类型来构建一个哈希函数: 一个基本的哈希表:(按字符串计算键值) function HashTable() { this. ...

  6. js:数据结构笔记5--链表

    数组: 其他语言的数组缺陷:添加/删除数组麻烦: js数组的缺点:被实现为对象,效率低: 如果要实现随机访问,数组还是更好的选择: 链表: 结构图: 基本代码: function Node (elem ...

  7. js:数据结构笔记1---数组

    JS中数组: 只是一种特殊的对象,比其他语言中效率低: 属性是用来表示偏移量的索引:在JS中,数字索引在内部被转化为字符串类型(这也是为什么写对象属性的时候可以不叫引号),因为对象中的属性必须是字符串 ...

  8. js:数据结构笔记14--高级算法

    动态规划: 递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题: 动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案: function dynFib(n) { ...

  9. js:数据结构笔记13--检索算法

    顺序查找:也称线性查找,暴力查找的一种 基本格式: var nums = []; for(var i = 0; i < 10; ++i) { nums[i] = Math.floor(Math. ...

随机推荐

  1. iOS设备屏幕像素总览

    本文永久地址为http://www.cnblogs.com/ChenYilong/p/4011728.html ,转载请注明出处.   本文永久地址为http://www.cnblogs.com/Ch ...

  2. 小白科普之JavaScript的BOM模型

    一.什么是BOM 1. BOM是browser object model的缩写,简称浏览器对象模型: 2. BOM提供了独立于内容而与浏览器窗口进行交互的对象,描述了与浏览器进行交互的方法和接口: 3 ...

  3. python网络编程之最简单的单工通信

    tcp_server.py from socket import * server = socket(AF_INET, SOCK_STREAM) server.bind(('',12345)) ser ...

  4. FastJSON 简介及其Map/JSON/String 互转

    在日志解析,前后端数据传输交互中,经常会遇到 String 与 map.json.xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言.跨前后端的事实上的标准数据交互格式.应该来说各个 ...

  5. Ubuntu 16.04 安装 VMware-Workstation-12

    以前一直使用 Ubuntu + Virtaulbox ,最近测试了 VMware-Workstation-9,性能超过 Virtaulbox-4.2.x,下面是详细步骤: 1 首先准备一个Ubuntu ...

  6. [ruby on rails] 跟我学之(7)创建数据

    通过form来创建数据,本章节将会涉及内容:创建form,用户重导向,渲染views 和 flash消息. 1. views初步 编辑 app/views/posts/index.html.erb这个 ...

  7. linux dd命令实用详解

    linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...

  8. Valid Perfect Square

    Given a positive integer num, write a function which returns True if num is a perfect square else Fa ...

  9. Android 中SimpleDateFormat的使用注意

    以前在程序中总这样使用  SimpleDateFormat sdf=new SimpleDateFormat("hh:mma");   date1=sdf.parse(alertT ...

  10. css样式,层叠顺序属性z-index

    在做项目的时候,居然单击后显示的顺序一直被别的li标签压着,最后终于找到了,是css的z-index属性赋值了,值越大,显示的层就越高 详情推荐百度百科:z-index z-index是针对网页显示中 ...