双向链表&&堆栈

王朝html/css/js·作者佚名  2006-01-08
宽屏版  字体: |||超大  

/*--------------双向链表&&堆栈--------------*/

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))

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有