javascript数据结构之单链表

  下面是用javascript实现的单链表,但是在输出的时候insert方法中存在问题,chrome的console报错说不能读取空的属性,调试了很久都没有通过,先在这里存着,以后再来修改一下。

 1 //数据结构之单链表。
 2 
 3 var Node = function(element){
 4     this.element = element; //创建结点类型。
 5     this.next = null;
 6 };
 7 //链表中的next指向下一个数据,element存放数据。
 8 
 9 var LinkedList = function(){  //创建链表LinkedList类,定义操作方法。
10     this.head = new Node("head");        //创建了头结点并且赋值为了head
11 
12     //find方法,从头节结点点开始,沿着链表一直查找,直到找到与数据value相等的值才会返回该结点,没有则返回为空。
13                 
14     this.find = function(value){
15         var currentNode = this.head;
16         while(currentNode.element != value){
17             if(value == currentNode.element){
18                 return currentNode;
19                 break;
20             }
21             else{
22                 currentNode = currentNode.next;
23             }
24         }
25         return null;
26     };
27 
28     //insert方法,在链表中插入一个新的数据newElem。方法内部的大致过程为:先创建一个新的结点newNode,再将这个结点插入到原有的链表中去,修改插入的结点的前后结点之间的链接关系。
29 
30     this.insert = function(newElem,value){
31         var newNode = new Node();
32         var currentNode = this.find(value);    //将新的数据newElem插入到value之后了。
33         newNode.element = newElem;
34         newNode.next = currentNode.next;
35         currentNode.next = newNode;
36 
37     };
38 
39     //remove方法,删除存放数据value的结点,还得将删除的结点的前后结点衔接起来。
40     this.remove = function(value){
41         var currentNode = this.head;
42         while(currentNode.next.next != value){
43             currentNode = currentNode.next;    //先找到删除数据的所在结点的前一个结点,然后将删除结点的前后两个结点相链接即可。        }
44         currentNode.next = currentNode.next.next;
45         }
46     };
47     
48     //show方法,展示链表里的所有数据。
49     this.show = function(){
50         var currentNode = this.head,
51             result;
52         currentNode = currentNode.next;    //因为头结点的数据element为空,所以输出直接跳过头结点。
53         while(currentNode.next != null){
54             result += currentNode.element;  
55             currentNode = currentNode.next;
56         }
57         return result;
58 
59     };
60 
61 };
62 
63 
64 
65 var list = new LinkedList();
66 list.insert("a","head");
67 list.insert("b","a");
68 list.insert("c","b");
69 console.log(list.show());
原文地址:https://www.cnblogs.com/jeavenwong/p/7360327.html