当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 双向链表&&堆栈

Javascript
javascript 实现的类似hao123的多邮箱登录效果
不错的用resizeTo和moveTo两个函数实现窗口的“打乒乓球”效果
出现“不能执行已释放的Script代码”错误的原因及解决办法
“不能执行已释放的Script代码”错误的原因及解决办法
javascript入门·对象属性方法大总结
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
JavaScript 入门·JavaScript 具有全范围的运算符
用javascript实现代替marquee的滚动字幕效果代码
[原创]仿google adsense颜色选择器代码,从中易广告联盟程序提取
greenbrower用到的function.js代码集合
javascript flash下fromCharCode和charCodeAt方法使用说明
内部的小页面,用层制作,随机变色
javascript简写效果“神秘的眼睛”
用js写“算24”游戏的思路分析与实现代码
[原创]js循环输出图片,不足的要补0
json简单介绍
javascript 获取网页参数系统
[原创]js判断ie方法集锦(含正则)代码短小经典
javascript SocialHistory 检查访问者是否访问过某站点
[原创]js判断是否有中文的脚本_js判断中文方法集合

Javascript 中的 双向链表&&堆栈


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-10   浏览: 232 ::
收藏到网摘: n/a


 /*--------------双向链表&&堆栈--------------*/
 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))