双向链表&&堆栈

原创 2003年02月13日 09:50:00


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

用双向链表实现一个栈

前面我们已经造好了一个轮子
  • u013490896
  • u013490896
  • 2014年06月18日 12:11
  • 734

用双向链表实现一个栈和队列

双向链表实现堆栈 双向链表实现队列
  • duan19920101
  • duan19920101
  • 2016年06月15日 23:43
  • 1374

浅谈双向链表的逆转以及用双向链表实现malloc/free/realloc

双向链表因为在Linux内核广泛使用,且能较好地考察对指针的理解,所以它的增删、逆转,以及如何用它来实现malloc/free/realloc等问题就成了技术型公司的偏好。   本篇第一部分谈双向链表...
  • xumin330774233
  • xumin330774233
  • 2014年02月12日 16:04
  • 1804

Python 实现双链表,栈,队列

1.双链表 class Node(object): def __init__(self, value=None): self._prev = None self...
  • python_tty
  • python_tty
  • 2017年02月24日 17:07
  • 635

数据结构之双向链表(C语言实现)

数据结构之双向链表(C语言实现)
  • kang___xi
  • kang___xi
  • 2016年11月26日 08:14
  • 942

《数据结构和Java集合框架第三版》读书笔记(六)LinkedList双向链表

JDK6和JDK7的算法有一些区别。JDK6是:带哨兵的环形双向链表,JDK7是不带哨兵、但是有first(头节点)和last(尾节点)的双向非循环链表。哨兵的好处是使得代码更简洁,但并不能降低对链表...
  • shuxiangxingkong
  • shuxiangxingkong
  • 2013年11月13日 21:00
  • 885

一个简单的双向链表的例子

题目描述: Implement the class with given header. As you guess, DouList means 逗list, very funny. to_st...
  • shujh_sysu
  • shujh_sysu
  • 2016年05月20日 10:26
  • 1319

双向链表的创建和相关操作

双向链表其实是单链表的改进。     当我们对单链表进行操作时,有时你要对某个结点的直接前驱进行操作时,又必须从表头开始查找。这是由单链表结点的结构所限制的。因为单链表每个结点只有一个存储直接后继结...
  • jw903
  • jw903
  • 2014年08月30日 21:34
  • 2106

双向链表图解(前插操作,删除操作)

双向链表 循环单链表的出现,虽然能够实现从任一结点出发沿着链能找到其前驱结点,但时间耗费是O(n)。如果希望从表中快速确定某一个结点的前驱,另一个解决方法就是在单链表的每个结点里再增加一个指向其前驱...
  • wangzhen209
  • wangzhen209
  • 2012年11月13日 21:33
  • 15166

单向链表和双向链表的原理及其相关实现

链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序排列,通过改变数组大小实现。而链表不是用顺序实现的,用指针实现,在内存中不连续。而链表又包括单向链表、双向...
  • Jasmine_shine
  • Jasmine_shine
  • 2015年03月03日 09:21
  • 8684
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:双向链表&&堆栈
举报原因:
原因补充:

(最多只允许输入30个字)