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

|