js链表操作
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script> 7 function Node(v){ 8 this.value=v; 9 this.next=null; 10 } 11 function ArrayList(){ 12 this.head=new Node(null); 13 this.tail = this.head; 14 this.append=function(v){ 15 node = new Node(v); 16 this.tail.next=node; 17 this.tail=node; 18 } 19 this.insertAt=function(ii,v){ 20 node = new Node(v); 21 //找到位置的节点 22 tempNode=this.head; 23 for(i=0;i<ii;i++){ 24 if(tempNode.next!=null){ 25 tempNode=tempNode.next; 26 }else{ 27 break; 28 } 29 } 30 node.next=tempNode.next; 31 tempNode.next = node; 32 } 33 this.removeAt=function(ii){ 34 node1=this.head; //要删除节点的前一个节点 35 for(i=0;i<ii;i++){ 36 if(node1.next!=null){ 37 node1=node1.next; 38 }else{ 39 break; 40 } 41 } 42 node2=node1.next; //要删除的节点 43 if(node2!=null){ 44 node1.next = node2.next; 45 if(node2.next==null){ 46 this.tail=node1; 47 } 48 } 49 } 50 51 } 52 function Iterator(arryList){ 53 this.point=arryList.head; 54 this.hasNext=function(){ 55 if(this.point.next!=null){ 56 this.point=this.point.next; 57 return true; 58 }else{ 59 return false; 60 } 61 } 62 this.next=function(){ 63 return this.point.value; 64 } 65 } 66 67 var arry = new ArrayList(); 68 arry.append(1); 69 arry.append(2); 70 arry.append(3); 71 arry.insertAt(1,8); 72 arry.insertAt(0,9); 73 arry.insertAt(100,100); 74 arry.insertAt(1000,1000); 75 arry.insertAt(1,200); 76 arry.insertAt(200,2000); 77 78 iterator = new Iterator(arry); 79 while(iterator.hasNext()){ 80 document.write(iterator.next()); 81 document.write('<br/>'); 82 } 83 </script> 84 </head> 85 <body> 86 87 </body> 88 </html>