JavaScript数据结构-列表

应用场景:购物清单

不包含任何元素的列表称为空列表

列表的完整抽象数据类型定义:

listSize( 属性) 列表的元素个数
pos(属性) 列表的当前位置
length(属性) 返回列表中元素的个数
clear(方法) 清空列表中的所有元素
toString(方法) 返回列表的字符串形式
getElement(方法) 返回当前位置的元素
insert(方法) 在现有元素后插入新元素
append(方法) 在列表的末尾添加新元素
remove(方法) 从列表中删除元素
front(方法) 将列表的当前位置设移动到第一个元素
end(方法) 将列表的当前位置移动到最后一个元素
prev(方法) 将当前位置后移一位
next(方法) 将当前位置前移一位
currPos(方法) 返回列表的当前位置
moveTo(方法) 将当前位置移动到指定位置
function List() {
        this.listSize = 0;
        this.append = append;
        this.remove = remove;
        this.pos = 0;
        this.dataStore = [];
        this.find = find;
        this.toString = toString;
        this.length = length;
        this.clear = clear;
        this.insert = insert;
        this.front = front;
        this.end = end;
        this.prev = prev;
        this.next = next;
        this.currPos = currPos;
        this.moveTo = moveTo;
        this.getElement = getElement;
        this.contains = contains;
      }
      function append(element) {
        this.dataStore[this.listSize++] = element;
      }
      function find(element) {
        var dataStore = this.dataStore;
        for(var i = 0, len = dataStore.length; i < len; i++) {
          if(dataStore[i] == element) {
            return i;
          }
        }
        return -1;
      }
      function remove(element) {
        var fountAt = this.find(element);
        if(fountAt > -1) {
          this.dataStore.splice(fountAt, 1);
          --this.listSize;
          return true;
        }
        return false;
      }
      function length() {
        return this.listSize;
      }
      function toString() {
        return this.dataStore;
      }
      function clear() {
        delete this.dataStore;
        this.dataStore = [];
        this.listSize = this.pos = 0;
      }
      function insert(element, after) {
        var insertPos = this.find(after);
        if(insertPos > -1) {
          this.dataStore.splice(insertPos + 1, 0, element); ++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) {
        var dataStore = this.dataStore;
        for(var i = 0, len = dataStore.length; i < len; i++) {
          if(dataStore[i] == element) {
            return true;
          }
        }
        return false;
      }
      var names = new List();
      names.append("1");
      names.append("2");
      names.append("3");
      names.append("4");
      names.append("5");
      names.append("6");
      names.insert("7", "6");
      names.prev();
      console.log(names.contains("7"));
时间: 2024-11-03 21:33:06

JavaScript数据结构-列表的相关文章

javascript数据结构与算法---列表

前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候上学那段时间,每次考完试后,学校都会列出这次考试成绩前十名的同学的排名及成绩单,等等这些都是列表的列子.我们计算机内也在使用列表,那么列表适合使用在什么地方呢?不适合使用在什么地方呢? 适合使用在:当列表的元素不是很多的情况下,可以使用列表,因为对列表中的元素查找或者排序时,效率还算非常高,反之:如果列表元素非常多的情况下,就不适合使用列表了.

JavaScript数据结构——队列的实现

前面楼主简单介绍了JavaScript数据结构栈的实现,http://www.cnblogs.com/qq503665965/p/6537894.html,本次将介绍队列的实现. 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的端称为队头. 队列的两种主要操作是:向队列中插入新元素和删除队列中的元素.插入操作也叫做入队,删除操作也叫做出队.入队操

javascript数据结构与算法---队列

队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素反而被优先处理.我们现在可以把队列想象对我们去餐馆吃饭的情景,很多人排队吃饭,排在最前面的人先打饭.新来的人只能在后面排队.直到轮到他们为止. 一:对队列的操作 队列有2种主要的操作,向队尾中插入新元素enqueue()方法和删除队列中的队首的元素的dequeue()方法,另外我们还有一个读取队头的元素,这个方法我们可以叫front()方法.该

新的JavaScript数据结构Streams

最近在网上看到了一个新的 Javascript 小程序——Streams,起初以为是一个普通的 Javascript 类库,但读了关于它的介绍后,我发现,这不是一个简单的类库,而且作者的重点也不是这个类库的功能,而是——借用文中的一段话:如果你愿意花10分钟的时间来阅读这篇文章,你对编程的认识有可能会被完全的改变(除非你有函数式编程的经验!).塔河县臧清机械 还有:Streams 实际上不是一个新的想法.很多的函数式的编程语言都支持这种特征.所谓‘stream’是 Scheme 语言里的叫法,S

javascript数据结构和算法 零(前记+序言)

前记 这本书Data Structure and Algorithm with Javascript 我将其翻译成<< javascript 数据结构和算法>> 为什么这么翻译?而不是翻译成"用javascript实现数据结构和算法" 原因有二: 一个,我觉的它更加简洁,第二个,我是想强调我们在这里使用的是javascript. 我不喜欢一些翻译的人把一个简单的语句进行加工,搞得晦涩难懂.我更喜欢外国人写书的 那种原汁原味.同样,我很喜欢外国人的那种分享精神,它

javascript数据结构和算法 一(本书组织结构)

环境 我们在本书中使用的Javascript编程环境是基于SpiderMonkey 引擎的javascript shell. 第一章讲述了在你的环境中下载 shell的介绍. 其他的shell例如Nodejs同样可以工作,虽然你可能需要简单的改变下代码. 除了shell,唯一你要准备的就是文本编辑器. 本书的组织结构 第一章:javascript语言的概览,至少是在本书中使用的javascript的一些特征.这一章同时展示了在整本书中使用的一些编程风格. 第二章:讨论了在计算机科学中最通用的数据

JavaScript数据结构——图的实现

在计算机科学中,图是一种网络结构的抽象模型,它是一组由边连接的顶点组成.一个图G = (V, E)由以下元素组成: V:一组顶点 E:一组边,连接V中的顶点 下图表示了一个图的结构: 在介绍如何用JavaScript实现图之前,我们先介绍一些和图相关的术语. 如上图所示,由一条边连接在一起的顶点称为相邻顶点,A和B是相邻顶点,A和D是相邻顶点,A和C是相邻顶点......A和E是不相邻顶点.一个顶点的度是其相邻顶点的数量,A和其它三个顶点相连,所以A的度为3,E和其它两个顶点相连,所以E的度为2

JavaScript 数据结构与算法之美 - 归并排序、快速排序、希尔排序、堆排序

1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算法和方便以后复习. 之所以把归并排序.快速排序.希尔排序.堆排序放在一起比较,是因为它们的平均时间复杂度都为 O(nlogn). 请大家带着问题:快排和归并用的都是分治思想,递推公式和递归代码也非常相似,那它们的区别在哪里呢 ? 来阅读下文. 2. 归并排序(Merge Sort) 思想 排序一个数

JavaScript数据结构总结

一.什么是数据结构高层数据结构是用于存储和组织数据的技术,这些数据使修改,导航和访问变得更加容易.数据结构决定了如何收集数据,我们可以用来访问数据的功能以及数据之间的关系.数据结构几乎用于计算机科学和编程的所有领域,从操作系统到基本的编码再到人工智能.数据结构使我们能够: 管理和利用大型数据集 从数据库中搜索特定数据 针对特定程序量身定制的设计算法 一次处理来自用户的多个请求 简化并加速数据处理 数据结构对于有效,现实地解决问题至关重要.毕竟,我们组织数据的方式对性能和可用性有很大影响.实际上,