JavaScript实现的链表数据结构实例
此例是javascript来建立链表。。
并对此进行了排序。。
还可以在GenericList一般链表上进行扩展。
实现各种排序及增,删,改结点。。
functionNode(){ this.data=null; this.next=null; }
functionGenericList(){ 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){ varnode=newNode(); node.data=t; node.next=this.head; this.head=node; }
}
functionSortList(){ //冒泡排序链表 this.BubbleSort=function() { if(this.head==null||this.head.next==null) { return; } varswapped; do{ this.previous=null; this.current=this.head;
varswapped=false; while(this.current.next!=null) { if(this.current.data-this.current.next.data>0) { vartmp=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=newGenericList();
(functionMain(){ varsl=new SortList(); for(vari=0;i<arguments.length;i++) {sl.addHead(arguments[i]); } alert("未排序的链表"); sl.print(); sl.BubbleSort(); alert("已排序的链表 从小到大"); sl.print();
})("1","2","3","4")