• 技术文章 >web前端 >js教程

    数据结构的学习之使用JavaScript实现链表的操作(实例详解)

    WBOYWBOY2021-12-24 18:04:26转载1222
    本篇文章给大家带来了数据结构学习中关于怎样使用JavaScript实现链表的相关知识,希望对大家有帮助。

    大前端成长进阶课程:进入学习

    链表有以下几个特点:

      可以将链表中的每个节点看成是一个对象,这个对象中有两个属性,一个是该节点的值,一个是该节点的下一个节点的地址(如果是双链表,还要添加前一个节点地址的属性)

    实现增加节点的操作:

    1 在尾节点处添加节点

     //在尾节点处添加节点
            function append(element){
            let node = new node(element);
            let current;
            if(head == null){
                current = node
            }else{
                while(current.next){
                    current = current.next;
                }
                current.next = node
            }
                length++;
            }

    代码分析:

    2.在任意位置添加节点

    分析

      将这个位置的前一个节点的next属性赋值为这个节点,并将它原先的下一个节点保存下来,赋值给现在这个节点的next属性

    function insert(position,element){
            let node = new Node(element);
            let current = head;
            let previous;//当前节点的前一个节点,在position处添加节点,就是在previos和current之间添加
            if(position = 0){
              node.next = head;
              head = node;
            }else{
              for(let i = 0;i< position;i++){
                pervious = current;
                current = current.next;
              }
    
              pervious.next = node;
              node.next = current;
            }
            length++;
            return true;
          }

    代码分析:

    实现删除节点的操作

    分析:删除节点的操作就是将目标节点前面的那个节点的指针指向目标节点的后一个节点

    1.删除指定节点

    function removed(element){
        
          let node = new Node(element);
          let pervious;
          let nextNode;
          let current = head;
    
        if(head != null){
          while (current != node){
            pervious = current;
            current = current.next;
            nextNode = current.next;
          }  
    
          pervious.next = nextNode;
          length--;
          return true;
        }else{
          return false;
        }    
        }

    2.删除指定位置的节点

    function removedAt(position){
            let current = head;
            let pervious;
            let nextNode;
            let i = 0;
    
            while(i < position){
              pervious = current;
              current = current.next;
              nextNode = current.next;
            }
    
            pervious.next = nextNode;
            length--;
            return true;
          }

    实现查询节点的操作

    分析:查询节点和删除节点差不多,都是通过遍历,找到相应的节点或是相应的位置,然后进行操作

    1.查询某个位置是哪个节点

    function searchElement(element){
          //输入元素,找到该元素后返回该元素的位置
          if(head != null){
            let node = new Node(element);
            let current;
            let index = 0;
            if(head == node){
              return 0;
            }else{
              current = head;
              while(current != node){
                current = current.next;
                index++;
              }
              return index;
            }
          }else{
            return -1;
          }
        }

    2.查询某个节点是在哪个位置

    function searchPosition(position){
            let i = 0;
            let current = head;
            while(i< position){
              current = current.next;
              i++;
            }
            return current;
        }

    思路总结

      关于链表的操作还有很多,复杂一点的链表还有双链表(在初始化节点的时候增加一个前节点)和循环链表(尾节点的下一个节点是头节点),这些链表的操作也是可以使用js实现的,这里就不多说了。总结一下,链表的核心在于

    【相关推荐:javascript学习教程

    以上就是数据结构的学习之使用JavaScript实现链表的操作(实例详解)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:javascript 前端 html
    上一篇:websocket和ajax的区别是什么 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 一文带你浅析JavaScript数组中的深复制与浅复制• 如何利用Javascript发送GET/POST请求?(实例详解)• JavaScript怎样隐藏html标签• 彻底搞懂JavaScript中this指向问题• JavaScript中style什么意思• 十分钟搞懂什么是JavaScript迭代器
    1/1

    PHP中文网