`
rockis
  • 浏览: 19198 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我写的一个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(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>
分享到:
评论
3 楼 rockis 2011-03-24  
jaychang 写道
cousor 拼错了哦 cursor

谢了
2 楼 jaychang 2011-01-12  
cousor 拼错了哦 cursor
1 楼 jaychang 2011-01-12  
  代码质量很高哈哈,很欣赏你的思路,收藏

相关推荐

    javascript链表可视化

    JavaScript链表可视化是一种将抽象的数据结构通过直观的图形方式展示出来的方法,这有助于开发者更好地理解和操作数据。在本项目中,我们使用了jQuery库来实现这一功能,它提供了丰富的DOM操作和事件处理,使得动态...

    javascript写的一个链表实现代码

    下面是我实现的一个链表: 代码如下: /*@author eric *@mail shmilyhe@163.com *blog.csdn.net/shmilyhe */ [removed] function Student(no,name){ this.id=no; this.name=name; this.scores={chinese

    javascript 链表算法

    - 如果链表不为空,则遍历到链表的最后一个节点,并将该节点的指针指向新节点。 - 最后更新链表长度。 2. **在指定位置插入节点**: - 创建新的节点对象。 - 检查插入位置的有效性。 - 遍历链表找到插入位置的...

    数据结构-使用javascript讲解数据结构之链表.zip

    循环链表最后一个节点的指针会指向链表的第一个节点,形成一个环状结构。 在JavaScript中,我们可以用对象来表示链表节点,如下所示: ```javascript function ListNode(data) { this.data = data; this.next = ...

    JavaScript数据结构之单链表和循环链表

    单链表是一种链表结构,它的每个节点只有一个指针域,指向下一个个节点。单链表的特点是只能单向遍历,从头节点开始,经过每一个节点直到尾节点。在单链表中添加和删除节点较为简单,通常只需要改变相邻节点的指针...

    JavaScript版去除链表重复元素

    在 JavaScript 中,处理链表并去除其中的重复元素通常需要定义一个链表节点类(Node)以及链表类(LinkedList),然后实现一个方法来遍历链表并去除重复的元素。 文件绿色安全,仅供学习交流使用,欢迎大家下载学习...

    JavaScript数据结构之链表的实现

    如果数据的增删操作频繁,且对顺序访问有较高要求,链表可能是一个不错的选择。相反,如果需要快速访问特定位置的元素,数组则更适合。在JavaScript中,数组提供了丰富的内置方法,如`push`、`pop`、`shift`、`...

    去除链表重复元素- JavaScript版

    附件包含去除链表重复元素_ JavaScript版,文件绿色...在 JavaScript 中,处理链表并去除其中的重复元素通常需要定义一个链表节点类(Node)以及链表类(LinkedList),然后实现一个方法来遍历链表并去除重复的元素。

    【JavaScript源代码】JavaScript数据结构之双向链表.docx

    以上就是如何使用 JavaScript 实现一个简单的双向链表。双向链表虽然增加了额外的操作复杂性和内存开销,但同时也提高了链表的访问效率和灵活性。在实际应用中,选择哪种链表结构取决于具体的需求场景。

    有序链表合并算法动态演示系统的毕业设计文档及系统 JAVA

    有序链表合并算法是计算机科学中的一个重要概念,特别是在数据结构和算法分析中。这个算法的主要目的是将两个或多个已排序的链表合并成一个单一的、有序的链表。在本毕业设计中,该算法被动态地演示,使得学生能够更...

    JavaScript实现链表插入排序和链表归并排序

    1. 将链表递归地拆分为更小的链表,直到每个子链表只包含一个节点(即链表为空或只包含一个节点时返回)。 2. 开始归并操作,将两个有序的子链表合并成一个有序的链表。 3. 重复归并操作,直至所有子链表归并完成,...

    linkedList:javascript中的链表实现

    链表javascript中的链表实现请通过 mocha 测试文档npm 测试链表堆栈: ✓ allows adding elements through array inside constructor ✓ allows adding elements ✓ allows taking out elements at top ✓ has an ...

    基于链表的学生信息管理系统

    把学生信息封装成结构体,作为链表的节点... (这两天帮别人做了一个课程设计,做完就发上来了。希望对大家有所帮助。) 没有资源分值的,用QQ登陆CSDN然后手机绑定CSDN账号 会送你50个 绝对够用。javascript:void(0);

    Leetcode 反转链表.js

    在JavaScript中,链表通常通过构建一个ListNode类来表示,其中包含val和next两个属性,分别表示节点的值和指向下一个节点的指针。反转链表的基本思路是遍历原链表,逐个节点地更改它们的next指针,将它们指向前一个...

    Java版链表模板类

    循环链表与普通链表的主要区别在于最后一个节点指向了头节点,形成一个闭合的环,这在处理循环遍历或某些特定算法时非常方便。 首先,让我们详细解析`CList.java`和`CList2.java`这两个文件可能包含的内容。`CList`...

    JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】

    一个 双向链表(doubly linked list) 是由一组称为节点的顺序链接记录组成的链接数据结构。每个节点包含两个字段,称为链接,它们是对节点序列中上一个节点和下一个节点的引用 开始节点和结束节点的上一个链接和下一...

    JavaScript 链表定义与使用方法示例

    JavaScript中的链表是一种重要的数据结构,它不同于数组,数组中的元素在内存中是连续存储的,而链表的每个元素(或称为节点)通过指针(在JavaScript中通常使用`next`属性)连接,形成一个逻辑上的线性序列。...

    javascript API 库函数

    JavaScript API库函数是开发者在编写JavaScript代码时经常会用到的一系列预定义的工具集合,它们大大简化了开发过程,提高了代码的可复用性和效率。本文将深入探讨JavaScript库函数的各个方面,帮助你更好地理解和...

Global site tag (gtag.js) - Google Analytics