function Entry(next, data);
{
this.next = next
this.data = data
}
function Iterator(node);
{
this.cousor = node
this.hasNext = function ();
{
return (this.cousor.next != null);;
}
this.next = function ();
{
var rt = this.cousor.next
this.cousor = this.cousor.next
return rt.data
}
}
function LinkedList();
{
this.head = new Entry(null, null);
this.size = function ();
{
var size = 0
if (this.head == null);
{
return size
}
var p = this.head.next
for(; p!=null; p = p.next);
size++;
return size;
}
this.clear = function ();
{
this.head = null
}
this.getNode = function (idx);
{
var pos = -1;
var p = this.head
while (p != null && pos < idx); {
p = p.next;
pos ++;
}
return p;
}
this.get = function (idx);
{
return this.getNode(idx);.data
}
this.add = function (data);
{
this.insert(this.size();, data);
}
this.insert = function (idx, data);
{
var p = this.getNode(idx-1);; /*注意查询idx-1*/
if (p == null);{
return
}
var node = new Entry(p.next, data);
p.next = node
}
this.remove = function (idx);
{
var prenode = this.getNode(idx - 1);
var node = this.getNode(idx);
if (prenode == null || node == null);
{
return null
}
prenode.next = node.next
return node.data
}
this.iterator = function ();
{
return new Iterator(this.head);
}
this.swap = function (a, b);
{
var av = this.getNode(a);
var bv = this.getNode(b);
var tmp = av.data
av.data = bv.data
bv.data = tmp
}
}
范例:
<script>
function Item(name, value);
{
this.name = name
this.value = value
}
function sample();
{
var item1 = new Item("a", "1");
var item2 = new Item("b", "2");
var list = new LinkedList();;
list.add(item1);
list.add(item2);
for(var itr = list.iterator();; itr.hasNext();; );
{
var itm = itr.next();;
alert("name:" + itm.name + "\t value:" + itm.value);
}
}
</script>