站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Javascript 专题一个Javascript链表

一个Javascript链表

摘要: 一个Javascript链表
<textarea readonly style="border:none;font-family:Courier New;line-height:150%;width:760px;overflow-y:visible"> 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>

</textarea>
↑返回目录
前一篇: javascript检测。在回送
后一篇: 日期相加的函数addDate(javascript)