用JavaScript实现单向链表

        单向链表是一个非常常见的数据结构,下面用JavaScript实现一个单向链表,能够加深对单向链表的理解。

分析
     单向链表可以用下图来说明其原理。
    
     下面的函数实现了一个单向链表:
           
var createLinkList = function(){

    var _this = {}, first = null;

    _this.add = function(val) {

        first = {data:val, next: first || null};//这句比较重要

    }

    return _this;

}
用下面的代码,就可以使用这个单向链表。
var linksList = createLinkList(); // 创建一个单链表实例

    linksList.add("jelle"); // 向链表添加一个元素

    linksList.add("you");// 再次添加元素
完整代码
 
<script type="text/javascript">

// <![CDATA[

var createLinkList = function(){

    var _this = {}, first = null;

        _this.length = 0;

        _this.add = function(val) {

            first = {data:val, next: first || null};

            _this.length++;

        }

         

        // --- del

        _this.del = function(val){

            if (first.data == val){

                first = first.next;

                return ;

            }

            var ptemp = temp = first;

            for( ; temp; ptemp = temp ,temp= temp.next){

                 
               if(temp.data == val){

                    ptemp.next = temp.next;

                    _this.length--;

                    return ;

                }

            }

        }

         

        // --- get

        _this.get = function(val){

  

            for( var temp = first ; temp; temp= temp.next){

              if(temp.data == val){

                    alert( temp )

                }

            }

        }

         

        // ---------

        _this.show = function(fn) {

            for(temp=first;temp;temp=temp.next) {

               fn(temp.data);

            }

        }

         

        return _this;

    }

     

    var linksList = createLinkList(); // 创建一个单链表实例

    linksList.add("NowaMagic"); // 向链表添加一个元素

    linksList.add("Gonn");// 再次添加元素

    linksList.add(1);

     

    function linkslista(){

        var text = '';

        linksList.show(function(data){

            text +='-'+ data;

        });
        document.getElementById('linkslist').value = text;

    }
       linkslista();

// ]]>
</script>
    数据结构在Javascript研发方面是很重要的,所以希望正在学Javascript的网友们要加强对数据结构的理解~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值