双向链表&&堆栈

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 koolfoo 的 blog


 /*--------------双向链表&&堆栈--------------*/
 function linklist(){
  var olist,olength,oresult;
  this.append = dlistappend;
  this.length = dlistlength;
  this.getat = dlistgetat;
  this.setat = dlistsetat;
  this.deleteat = dlistdeleteat;
  this.insertat = dlistinsertat;
  this.gethead = dlistgethead;
  this.gettail = dlistgettail;
  this.clearall = dinitlinklist;
  this.version = dlistversion;

  this.push
  this.pop

  dinitlinklist();
 }
 function linklistdata(){
  this.data = null;
  this.next = null;
         this.prev = null;
 }
 function dlistversion(bbool){
         if(bbool){
   alert(olist.data);
  }
         return olist.data;
 }
 function dinitlinklist(){
  var ver = "双向链表1.0版\n\n作者:卢印刚\n\n2002.9.3\n\n版权所有"
  olist  = new linklistdata();
  olist.data = ver;
  olist.prev = olist;
  olist.next = olist;
  olength = -1;
 }
 function dlistappend(m){
  var temp = olist.prev;
  temp.next = new linklistdata();
  temp.next.data = m;
  temp.next.prev = temp;
  temp.next.next = olist;
  olist.prev = temp.next;
  olength += 1;
  oresult = m;
  return oresult;
 }
 function dlistlength(){
  return olength;
 }
 function dlistgethead(){
  return olist.next.data;
 }
 function dlistgettail(){
  return olist.prev.data;
 }
 function dlistgetposition(d,i){
  var pos = 0;
  if(i<olength/2){
   while(pos<=i){
    d = d.next;
    pos+=1;
   }
   return d;
  }else{
   pos = olength;
   while(pos>=i){
    d = d.prev;
    pos-=1;
   }
   return d;
  }
 }
 function dlistgetat(i){
  if(i>olength){
   i=olength;
  }
  var temp = olist;
  temp = dlistgetposition(temp,i);
  oresult = temp.data;
  return oresult;
 }
 function dlistsetat(i,m){
  if(i>olength){
   i=olength;
  }
  var temp = olist;
  temp = dlistgetposition(temp,i);
  temp.data = m;
  oresult = temp.data;
  return oresult;
 }
 function dlistdeleteat(i){
  if(i>olength){
   i=olength;
  }
  var temp = olist;
  temp = dlistgetposition(temp,i);
  temp.prev.next = temp.next;
  oresult = temp.data;
  delete temp;
  olength-=1;
  return oresult;
 }
 function dlistinsertat(i,m){
  if(i>olength){
   i=olength;
  }
  var temp = olist;
  temp = dlistgetposition(temp,i-1);
  var d = new linklistdata();
  d.data = m;
  d.prev = temp;
  d.next = temp.next;
  temp.next.prev = d;
  temp.next = d;
  olength+=1;
  oresult = m;
  return oresult;
 }
 /*--------------双向链表&&堆栈--------------*/



/*------------------应用--------------------*/
var list = new linklist();
var temp = new array("king","love","you","me","hello");
for(var i=0;i<temp.length;i++){
           list.append(temp[i]);
}
list.insertat(2,"fuck");
alert(list.getat(2))
list.deleteat(2)

alert(list.getat(2))

本文关键:list,stack,javascript
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top