zoukankan      html  css  js  c++  java
  • 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
           }

    }

  • 相关阅读:
    SQL Server经典函数之数字去零
    c# 定时执行python脚本
    SQL Server 存储过程生成流水号
    MySQL删除数据表中重复数据
    js封装正则验证
    .NET中将中文符号转换成英文符号
    WebApi中跨域解决办法
    JS生成GUID方法
    LINQ中的连接(join)用法示例
    LINQ分组取出第一条数据
  • 原文地址:https://www.cnblogs.com/jacktu/p/1011505.html
Copyright © 2011-2022 走看看