1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>循环链表</title> 6 </head> 7 <body> 8 <script> 9 function Node(ele){ 10 this.ele = ele; 11 this.next = null; 12 } 13 function linkList(){ 14 this.head = new Node("head"); 15 this.head.next = this.head; 16 this.find = find; 17 this.insert = insert; 18 this.display = display; 19 this.findPrev = findPrev; 20 this.remove = remove; 21 } 22 23 function display(){ 24 var currNode = this.head; 25 while (currNode.next != null && currNode.next.ele != "head"){ 26 console.log(currNode.next.ele); 27 currNode = currNode.next; 28 } 29 } 30 31 function find(item){ 32 var currNode = this.head; 33 while(currNode.ele != item && currNode.next.ele != "head" ){ 34 currNode = currNode.next; 35 } 36 return currNode; 37 } 38 39 function insert(newEle,ele){ 40 var newNode = new Node(newEle); 41 var current = this.find(ele); 42 newNode.next = current.next; 43 current.next = newNode; 44 } 45 46 function findPrev(item){ 47 var currNode = this.head; 48 while ((currNode.next != null) && (currNode.next.ele != item)){ 49 currNode = currNode.next; 50 } 51 return currNode; 52 } 53 54 function remove(item){ 55 var prev = this.findPrev(item); 56 if(prev.next != null){ 57 prev.next = prev.next.next; 58 } 59 } 60 61 62 63 var obj = new linkList(); 64 obj.insert("zhangsan","head"); 65 obj.insert("lisi","zhangsan"); 66 obj.insert("zhaowu","lisi"); 67 obj.insert("wangliu","zhaowu"); 68 obj.display(); 69 console.log(obj.findPrev("zhaowu"),"zhaowu"); 70 obj.remove("lisi"); 71 obj.display(); 72 </script> 73 </body> 74 </html>