JavaScript实现的链表数据结构实例

   此例是javascript来建立链表。。

  并对此进行了排序。。

  还可以在GenericList一般链表上进行扩展。

  实现各种排序及增,删,改结点。。

  代码如下:

  function Node(){

  this.data=null;

  this.next=null;

  }

  function GenericList(){

  this.head=null;

  this.current=null;

  //打出所有的链表结点

  this.print= function(){

  this.current=this.head;

  while(this.current!=null){

  alert(this.current.data);

  this.current=this.current.next;

  }

  },

  //建立链表

  this.addHead =function(t){

  var node=new Node();

  node.data=t;

  node.next=this.head;

  this.head=node;

  }

  }

  function SortList(){

  //冒泡排序链表

  this.BubbleSort=function()

  {

  if(this.head==null||this.head.next==null)

  {

  return ;

  }

  var swapped;

  do{

  this.previous=null;

  this.current=this.head;

  var swapped=false;

  while(this.current.next!=null)

  {

  if(this.current.data-this.current.next.data>0)

  {

  var tmp=this.current.next;

  this.current.next=this.current.next.next;

  tmp.next=this.current;

  if(this.previous==null)

  {

  this.head=tmp;

  }

  else

  {

  this.previous.next=tmp;

  }

  this.previous=tmp;

  swapped=true;

  }

  else

  {

  this.previous=this.current;

  this.current=this.current.next;

  }

  }

  }while(swapped);

  }

  }

  SortList.prototype=new GenericList();

  (function Main(){

  var sl=new SortList();

  for(var i=0;i

  {sl.addHead(arguments[i]);

  }

  alert("未排序的链表");

  sl.print();

  sl.BubbleSort();

  alert("已排序的链表 从小到大");

  sl.print();

  })("1","2","3","4")

时间: 2024-10-09 17:31:42

JavaScript实现的链表数据结构实例的相关文章

JavaScript实现的链表数据结构实例_javascript技巧

此例是javascript来建立链表.. 并对此进行了排序.. 还可以在GenericList一般链表上进行扩展. 实现各种排序及增,删,改结点.. 复制代码 代码如下: function Node(){   this.data=null;   this.next=null; } function GenericList(){   this.head=null;   this.current=null;   //打出所有的链表结点   this.print= function(){   this

javascript数据结构之双链表插入排序实例详解_javascript技巧

本文实例讲述了javascript数据结构之双链表插入排序实现方法.分享给大家供大家参考,具体如下: 数组存储前提下,插入排序算法,在最坏情况下,前面的元素需要不断向后移,以便在插入点留出空位,让目标元素插入. 换成链表时,显然无需做这种大量移动,根据每个节点的前驱节点"指针",向前找到插入点后,直接把目标值从原链表上摘下,然后在插入点把链表断成二截,然后跟目标点重新接起来即可. <!doctype html> <html> <head> <t

浅谈PHP链表数据结构(单链表)_php实例

链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区) 规定:基本数据类型,一般放在栈区 复合数据类型,比如对象,放在堆区 定义一个类Hero 定义成员属性排名 $no 定义成员属性姓名 $name 定义成员属性昵称 $nickname 定义成员属性 $next,是一个引用,指向下一个Hero对象 定义构造函数,传递参数:

C语言创建和操作单链表数据结构的实例教程_C 语言

1,为什么要用到链表 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性.但数组也同样存在一些弊病.如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一.我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费. 我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要.链表就是我们需要的动态数组.它是在程序的执行过程中根据需要有数据存储就向系统要求

JavaScript简单的鼠标拖动实例:自动吸附实例

文章简介:JavaScript鼠标拖动+自动吸附实例. 学了几天的JavaScript,自己动手做了一个简单的鼠标拖动的实例,拖动过程中科自动检测与目标容器的距离,在一定的距离范围内可以自动将被拖动的元素加入到目标容器中,希望对开始学习javascript的童鞋有用-- 先看看效果图(Chrome.FireFox.Opera.Safari.IE9测试通过): 效果图(虚线框:目标对象 蓝色填充透明框:临时拖动对象 红色填充框:被拖动对象) 主要思路:首先给要拖动的div添加一个鼠标按下(mous

javascript原始值和对象引用实例分析

javascript原始值和对象引用实例分析         这篇文章主要介绍了javascript原始值和对象引用的方法,实例分析了javascript原始值和对象引用的功能.定义与相关技巧,需要的朋友可以参考下 本文实例讲述了javascript原始值和对象引用的方法.分享给大家供大家参考.具体分析如下: 一句话来说:原始值是不可变的,而对象引用是可变的. js中的原始值(undefined.null.布尔值.数字和字符串)与对象(包括数组和函数)有着本质的区别.原始值是不可更改的,任何方法

JavaScript中匿名函数用法实例

 这篇文章主要介绍了JavaScript中匿名函数用法,实例分析了javascript中匿名函数的功能.定义及具体用法,需要的朋友可以参考下     本文实例讲述了JavaScript中匿名函数用法.分享给大家供大家参考.具体分析如下: JS中可以不用给函数名称,而是在使用时直接通过function把函数体赋值给相关的事件或者变量. 下面的JS代码给按钮设定了一个onclick事件,使用了匿名函数 ? 1 2 3 4 5 6 7 8 9 <form action="#">

JavaScript自定义等待wait函数实例分析

 这篇文章主要介绍了JavaScript自定义等待wait函数,实例分析了自定义等待函数的实现与使用技巧,需要的朋友可以参考下     本文实例讲述了JavaScript自定义等待wait函数用法.分享给大家供大家参考.具体分析如下: 下面是一个js自定义的wait函数,可以暂停程序的执行 ? 1 2 3 4 5 6 7 8 function sleep(delay) { var start = new Date().getTime(); while (new Date().getTime()

JavaScript输入邮箱自动提示实例代码

 这篇文章主要介绍了JavaScript输入邮箱自动提示实例代码,有需要的朋友可以参考一下 本来想把之前对artTemplate源码解析的注释放上来分享下,不过隔了一年,找不到了,只好把当时分析模板引擎原理后,自己尝试   写下的模板引擎与大家分享下,留个纪念,记得当时还对比了好几个模板引擎来着.   这里所说的js的模板引擎,用的是原生的javascript语法,所以很类似php的原生模板引擎.       前端模板引擎的作用?   1. 可以让前端开发更简单,不需要为了生成一个dom结构而使