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

Javascript
csdn 博客的css样式 v3
javascript 常用代码技巧大收集
javascript div 弹出可拖动窗口
jQuery 使用个人心得
ajax 文件上传应用简单实现
用正则表达式 动态创建/增加css style script 兼容IE firefox
10个新的最有前途的JavaScript框架
自动完成JS类(纯JS, Ajax模式)
JavaScript 颜色梯度和渐变效果
IE6与IE7中,innerHTML获取param的区别
for 循环性能比较 提高for循环的效率
Ext javascript建立超链接,进行事件处理的实现方法
利用javascript移动div层-javascript 拖动层
jQuery 全选效果实现代码
一个tab标签切换效果代码
提取自百度有啊的css圆角效果
可左右平滑滚动的产品展示效果
响应鼠标变换表格背景或者颜色的代码
ymyang 绘图 实例代码
JS 单击连接保存图片的函数

Javascript 中的 双向链表&&堆栈


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