数据结构之JavaScript实现List

标签: JavaScript 数据结构 List 列表
3人阅读 评论(0) 收藏 举报
分类:
利用数组实现列表。
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>JavaScript实现列表</title>
</head>
<body>
	
	<script>
		/*定义List类及其拥有的属性和方法*/
		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.hasNext;
			this.hasPrev;
			this.length = length;
			this.currPos = currPos;
			this.moveTo = moveTo;
			this.getElement = getElement;
			this.contains = contains;
		}


		/*JavaScript实现List的方法*/

		/*append:给列表添加元素*/
		function append(element){
			this.dataStore[this.listSize++] = element;
		}

		/*find:从列表中找到某个元素*/
		function find(element){
			for (var i = 0; i < this.dataStore.length; i++) {
				if(this.dataStore[i]==element){
					return i;
				}
			}
			return -1;
		}

		/*remove:从列表中删除元素*/
		function remove(element){
			var findAt =this.find(element);
			if(findAt>-1){
				this.dataStore.splice(findAt,1);
				this.listSize--;
				return true;
			}
			return false;
		}

		/*length:返回列表长度*/
		function length(){
			return this.listSize;
		}

		/*toString:显示列表中的元素*/
		function toString(){
			return this.dataStore;
		}

		/*insert:插入元素*/
		function insert(element,after){
			if(typeof after == 'number'){
				this.dataStore.splice(after,0,element);
				this.listSize++;
				return true;
			}else{
				var insertAt = this.find(after);
				if(insertAt>-1){
					this.dataStore.splice(insertAt+1,0,element);
					this.listSize++;
					return true;
				}
				return false;
			}
		}

		/*clear:清空列表*/
		function clear(){
			this.dataStore = [];
			this.listSize = 0;
			this.pos = 0;
		}

		/*contains:判断给定值是否在列表中*/
		function contains(element){
			for(var i=0;i<this.dataStore.length;i++){
				if(this.dataStore[i]==element){
					return true;
				}
				return false;
			}
		}

		/*getElement:返回列表当前元素*/
		function getElement(){
			return this.dataStore[this.pos];
		}

		/*front:到列表头部*/
		function front(){
			this.pos = 0;
			return this;
		}

		/*end:回到尾部*/
		function end(){
			this.pos = this.listSize-1;
			return this;
		}

		/*prev:前一个*/
		function prev(){
			this.pos--;
			return this;
		}

		/*next:后一个*/
		function next(){
			if(this.pos<this.listSize-1){
				this.pos++;
				return this;
			}
		}

		/*currPos:返回当前下标*/
		function currPos(){
			return this.dataStore[pos];
		}

		/*moveTo:移动到指定下标*/
		function moveTo(postion){
			this.pos = postion;
		}

		/*hasNext:判断是否还有下一个*/
		function hasNext(){
			return this.pos<this.listSize-1;
		}

		/*hasPrev:判断是否还有前一个*/
		function hasPrev(){
			return this.pos>0;
		}

		/*测试*/
		var names = new List();
		names.append("wlk");
		names.append("wlh");
		names.append("wkz");
		console.log(names.toString());
		//其它方法这里不予测试,作者在本地调试全部通过。

	</script>
</body>
</html>

查看评论

数据结构和算法

-
  • 1970年01月01日 08:00

JavaScript之Set和Map数据结构

setES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。//例 const s = new...
  • c_kite
  • c_kite
  • 2017-05-31 12:19:46
  • 1126

数据结构与算法分析 c++11 List实现

在设计时,需要以下四个类: 1. List 类本身,它包含连接到链表两端的链、表的大小,以及一些方法。 2. Node 类,它是一个私有的内嵌类。一个节点包含数据和指向前后两个节点的两个指针,以及...
  • vellerzheng
  • vellerzheng
  • 2017-05-07 14:30:30
  • 429

JavaScript数据结构之队列

队列和栈非常的类似,但是使用了不同的原则,栈是先进后出,而队列是先进先出,即遵循的是FIFO(First In First Out,先来先服务)。队列也可以这样形象地想象成是将数组装到一根管子里,一边...
  • L_in12
  • L_in12
  • 2016-06-27 11:10:16
  • 781

javascript数据结构8-图(Graph)

图(graph) 图由边的集合及顶点的集合组成 有向图: 无向图: 代码: Graph function Graph(v){ thi...
  • future_todo
  • future_todo
  • 2016-10-09 11:34:58
  • 535

用JavaScript实现map数据结构

前一段时间和同事在一起讨论,什么才能够改善我们的Javascrip代码。我当时的反应,就是“适合场景的数据结构,数据结构为王”,数据结构的设计优良要比代码的优良更好,没有很好的数据结构很难写出清晰、简...
  • jkler_doyourself
  • jkler_doyourself
  • 2008-03-16 15:38:00
  • 6561

javascript数据结构及实现二叉树算法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • qq_36048015
  • qq_36048015
  • 2017-09-08 21:53:15
  • 310

数据结构与算法JavaScript描述 完整版216页 PDF(含源码)

  • 2015年05月15日 10:37
  • 14.14MB
  • 下载

C#数据结构-List实现

把C#内部的List&amp;lt;T&amp;gt;手动实现了一遍,实现很多Array开头的方法,比如Array.Copy() , Array.Clear()等,在.NET Framework的内部...
  • qq826364410
  • qq826364410
  • 2018-03-28 16:27:57
  • 47

C语言实现List的数据结构(很详细的注释)

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • baidu_19473529
  • baidu_19473529
  • 2017-06-27 22:39:28
  • 2301
    个人资料
    持之以恒
    等级:
    访问量: 442
    积分: 237
    排名: 32万+
    文章存档
    最新评论