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

Javascript
JavaScript 自动完成脚本整理(33个)
7个Javascript地图脚本整理
JavaScript 事件记录使用说明
Javascript remove 自定义数组删除方法
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
Jquery Ajax.ashx 高效分页实现代码
extjs 学习笔记 四 带分页的grid
javascript void(0)的妙用
用Javascript 编写可以缓慢弹出收缩的层
再谈ie和firefox下的document.all属性
JavaScript 常用函数库详解
JS 截取字符串substr 和 substring方法的区别
Domino中运用jQuery读取视图内容的方法
Js+CSS 文字渐隐渐现显示
Javascript 小写字母依次变为大写
JavaScript 炫彩的文字
javascript 洒脱飘动的文字
JavaScript 平滑文字闪烁
仿打字特效的JS逐字出现的信息文字
JavaScript数组应用 可依次读取的公告栏文字

Javascript 中的 双向链表&&堆栈


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-10   浏览: 96 ::
收藏到网摘: 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))