手机版

Javascript数据结构和算法列表

时间:2021-10-12 来源:互联网 编辑:宝哥软件园 浏览:

在日常生活中,人们经常使用列表。比如我们有时候去购物的时候,为了把购物时买的东西都列出来,可以在去之前把要买的东西列出来,这就需要用到列表。或者我们小的时候,上学的时候,学校会列出每次考试后前十名学生的排名和成绩单等等。我们在电脑中也使用列表,那么列表适合用在哪里呢?哪里不适合用?

适合:当列表中元素不多的时候,可以使用列表,因为对列表中的元素进行搜索或排序时效率很高;否则,如果列表中有许多元素,则不适合使用该列表。

1:列表的抽象数据类型定义。

为了设计列表的抽象数据类型,我们需要给出列表的定义,包括列表应该具有什么属性,应该对列表执行什么操作。

列表是一组有序的数据。每个列表中的数据项称为元素。在javascript中,列表中的元素可以是任何数据类型。对于列表中可以存储多少元素,没有事先的协议。然而,在实际使用中,元件的数量受到程序存储器的限制。

现在我们想设计一个列表,这样我们就可以考虑在实现列表时应该包含哪些属性和方法。当然,我下面的设计都是根据《javascript数据结构与算法》一书中的演示设计的。到目前为止,我们可以学习如何设计自己的抽象类,作为将来编写程序时的参考。对我们来说,现在学习书中的演示最重要的是学习他们的设计思想和编写代码的方式。它们具有以下属性;

1.listSize(属性):使用listSize变量保存列表中的元素数量。2.pos(属性):列表的当前位置和元素的索引。3.数据存储(属性):初始化一个空数组来保存元素的数量。如果我们想得到列表中的具体元素,可以使用上面的pos属性;例如DATASE[pos];

所有方法;在下面的列表中解释,不一一介绍。

二:如何实现list类。

根据上面定义的list抽象数据类型,我们可以通过构造器原型模式实现下面的List类,如下所示。复制代码如下:function List() {//列表中元素个数为this . listsize=0;

//列表的当前位置是什么?this . pos=0;

//初始化一个空数组来保存列表元素this . datastore=[];

}

list . prototype={//Add element append : function(element){ var self=this;self.dataStore[this.listSize ]=元素;},

//从列表中移除元素remove:function(元素){ var self=thisvar curIndex=self.find(元素);if(curIndex-1){ self . datastore . splice(curIndex,1);self.listSize返回真;}返回false},

//查找列表中的元素,返回index find : function(element){ var self=this;for(var i=0,dataLen=self . datastore . length;i dataLeni ) { if(self.dataStore[i]==元素){ return I;} } return-1;},//返回list length : function(){ return this。列表大小;},

//显示元素tostring : function(){ return this . datastore;},

/* *在指定元素后插入一个元素* @ param element current element * @ param element在此元素后插入当前元素*/insert: function (element,element after){ var self=this;var insertPos=self . find(element after);if(insertPos-1){ self . datastore . splice(insertPos 1,0,element);self.listSize返回真;}返回false},//清除列表中的所有元素clear : function(){删除此。数据存储;this . DATASE=[];this . listsize=this . pos=0;},//判断列表中给定的元素是否包含s:函数(element){ var self=this;for(var i=0,ilen=self . Datastore . length;我爱你;i ) { if(self.dataStore[i]==元素){ return true} }返回false},//将列表中的当前元素移动到front : function(){ this . pos=0;},//将列表中的当前元素移动到最后一个位置end : function(){ this . pos=this . listsize-1;},//将当前位置向后移动一个prev : function(){ if(this . pos0){-this . pos;}},//将当前位置向前移动一个next:函数(){ if(this . post his . listsize-1){ this . pos;}}.//返回list curpos : function(){ returnthis . pos;},//将当前位置移动到指定位置移动到:函数(n){ this . pos=n;},//返回当前位置的元素getelement : function(){ return this . datastore[this . pos];}};

如上:实现一个列表类包括和上面一样多的方法。当然我们也可以扩展一些其他的方法来丰富list类的实现,主要可以学习上面的编码方法。

版权声明:Javascript数据结构和算法列表是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。