简明现代魔法 -> 数据结构 -> 用JavaScript实现单向链表

用JavaScript实现单向链表

2010-07-31

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

程序演示

已经基本实现了。单链表的基本功能!看下面演示。

当前链表数据

操作方法.把数据写入下面的TEXT 使用 按钮 add 添加 del 删除 get 获取

分析

单向链表可以用下图来说明其原理。

下面的函数实现了一个单向链表:

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> 
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们