1.列表的实现
<script text="text/javascript">
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.length=length;
this.contains=contains;
}
function append(element)
{
this.dataStore[this.listSize++] = element;
}
function find(element)
{
for (var i = 0; i < this.dataStore.length; ++i)
{
if (this.dataStore[i] == element)
{
return i;
}
}
return -1;
}
function remove(element)
{
var foundAt = this.find(element);
if (foundAt > -1)
{
this.dataStore.splice(foundAt,1);
--this.listSize;
return true;
}
return false;
}
function length()
{
return this.listSize;
}
function toString()
{
return this.dataStore;
}
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 clear()
{
delete this.dataStore;
this.dataStore = [];
this.listSize = this.pos = 0;
}
function contains(element)
{
for (var i = 0; i < this.dataStore.length; ++i)
{
if (this.dataStore[i] == element)
{
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 doTest()
{
var names = new List();
names.append("Clayton");
names.append("Raymond");
names.append("Cynthia");
names.append("Jennifer");
names.append("Bryan");
names.append("Danny");
names.front();
document.write(names.getElement());
names.next();
document.write(names.getElement());
names.next();
names.next();
names.prev();
document.write(names.getElement());
}
</script>
2.列表的使用
使用列表后可以很容易的对列表中的元素进行增删等修改,对于需要用列表展示的数据带来方便。
3.使用迭代器访问列表
使用迭代器的优点:不必关心底层数据结构;若添加元素,索引值会改变,迭代器无需更新;对于不同的数据类型,为访问列表元素提供了统一的方式。举例如下:
for(names.front(); names.currPos() < names.length(); names.next() ){...}