zoukankan      html  css  js  c++  java
  • 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());
  • 相关阅读:
    1. 命令执行漏洞简介
    3. 从零开始学CSRF
    2. DVWA亲测CSRF漏洞
    使用pt-fifo-split 工具往mysql插入海量数据
    如何打印矩阵
    年轻人,你活着不是为了观察K线做布朗运动
    Python 之匿名函数和偏函数
    Python之闭包
    Python之装饰器
    Python之with语句
  • 原文地址:https://www.cnblogs.com/jeavenwong/p/7360327.html
Copyright © 2011-2022 走看看