javascript中实现的链表

 

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(nullnull)
       
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
       }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值