时间: 2021-07-31 作者:daque
/*--------------双向链表&&仓库--------------*/ 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))