用javascript实现的有序链表

原创 2006年06月11日 22:44:00

用javascript模仿java实现的有序链表,实现按对象的某个属性对对象进行排序。

<script>


/**
 * 按对象中指定的属性名升序排序(如需指定升序或降序还需改进)
 * @param objs,对象数组
 * @param attrName 要排序的属性名
 * @return 返回排序后的对象数组
 */
function sortObjArray(objs,attrName){
 if(arguments.length<2||attrName==null||attrName==""){
  alert("请指定要排序的属性名");return objs;
 }
 if(!objs.length||objs.length<2)return objs;
 var tempObjs=[];
 //将数组放到链表中
 for(var i=0;i<objs.length;i++){
  tempObjs[i]=new Link1();
  tempObjs[i].obj=objs[i];
 }
 //排序
 var slist=new SortedList();
 slist.SortedList(tempObjs,attrName);
 var returnArray=new Array();
 for(var i=0;i<objs.length;i++){
  returnArray[i]=slist.remove().obj;
 }
 return returnArray;
}

function Link1(){}
Link1.prototype.obj=null;
Link1.prototype.next1=new Link1();
 Link1.prototype.Link1=function(object){
 obj=object;
}

function SortedList(){}
SortedList.prototype.first=new Link1();
 SortedList.prototype.SortedList=function(linkArr,nm){
 var sortedList=new SortedList();
 sortedList.first=null;
 for(j=0;j<linkArr.length;j++){
  sortedList.insert(linkArr[j],nm);
 }
}
var SortedVar=new SortedList();
 SortedList.prototype.insert=function(lnk,nm){
  var previous1=null;
  var current1=SortedVar.first;
  while(current1.obj!=null&&lnk.obj[nm]>current1.obj[nm]){
    previous1=current1;
    current1=current1.next1;
 }
  if(previous1==null){
   SortedVar.first=lnk;
  }else{
   privious1=new Link1();
   previous1.next1=lnk;
  }
  lnk.next1=current1;
}
SortedList.prototype.remove=function (){
 var temp=new Link1();
 temp=SortedVar.first;
 SortedVar.first=SortedVar.first.next1;
 return temp;
}

</script>

有序链表按逆序合并的实现

  • 2014年10月26日 16:26
  • 119KB
  • 下载

JavaScript对有序链表的合并

对于将两个有序链表合并为一个有序链表的问题,严蔚敏版的《数据结构》中用到了一种经典的算法。 1.使用两个指针,分别指向两条链表中当前待比较的节点,创建一条新链表,用于存放两条链表中的节点。 2.每...
  • esir82
  • esir82
  • 2017年03月13日 21:27
  • 609

两个有序链表求并

  • 2013年12月01日 15:30
  • 2KB
  • 下载

归并有序链表

  • 2011年12月13日 11:57
  • 852KB
  • 下载

PAT 2-12 两个有序链表序列的交集(C语言实现)

题目描述: 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式说明: 输入分2行,分别在每行给出由若干个正整数构成的非降序序列,用-1表示序列的结...

有序链表的建立与归并

  • 2012年04月19日 11:11
  • 273KB
  • 下载

面试题17:合并两个有序链表,递归和非递归实现

递归和非递归的方法合并两个有序链表。

java基于有序链表的优先级队列实现

1.准备Link.class类中包含数据项(为了简单,这里的数据项就为int值)和下一个Link节点的引用/**链表中的节点类,保存数据和节点信息*/ public class Link { ...

17_7_13:合并两个有序链表。实现1+2+3+...+n,不使用常规方法

1.【基础题】–合并两个有序链表,合并以后的链表依旧有序。 2.【附加题】–实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。(这个题有多种解法,大家可以尽量去思考,这个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用javascript实现的有序链表
举报原因:
原因补充:

(最多只允许输入30个字)