WEB开发网
开发学院网页设计JavaScript 双向链表&&堆栈 阅读

双向链表&&堆栈

 2007-12-06 14:59:09 来源:WEB开发网   
核心提示: /*--双向链表&&堆栈--*/ function LinkList(){var oList,oLength,oResult;this.Append = dListAppend;this.Length = dListLength;this.GetAt = dListGetAt;this.SetAt = dL


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


Tags:双向 堆栈

编辑录入:coldstar [复制链接] [打 印]
赞助商链接