JS数据结构的双向链表定义

这次给大家带来JS数据结构双向链表定义,使用JS数据结构双向链表定义的注意事项有哪些,下面就是实战案例,一起来看一下。

双向链表和普通链表的区别在于,在链表中,一个节点只有链向下一个节点的链接,而在双向链表中,链接是双向的:一个链向下一个元素,另一个链向前一个元素。

双向链表提供了两种迭代列表的方法:从头到尾,或者反过来。我们也可以访问一个特定节点的下一个或前一个元素。在单向链表中,如果迭代列表时错过了要找的元素,就需要回到列表起点,重新开始迭代。这是双向链表的一个优点。

function DoubleLink(){  var length=0;//链表长度  var head=null;//头结点的引用  var tail=null;//尾节点的引用  function Node(e){    this.element=e;    this.next=null;    this.previous=null;  }  this.insertAt=function(position,e){//在任意位置添加节点    if(position>=0&&position<=length){//判断边界      var node=new Node(e);      var current=head;      var previous;      var index=0;      if(position==0){//在第一个位置添加        if(!head){//链表为空的时候添加第一个节点          head=node;          tail=node;        }else{          current=head;          node.next=current;          current.previous=node;          head=node;        }      }else if(position==length){//在链表末尾添加        current=tail;        current.next=node;        node.previous=current;        tail=node;      }else{        while(index-1&&position<length){//边界判断      var current=head;      var previous;      var index=0;      if(position==0){//删除第一个位置的节点        head=current.next;        if(length==1){//如果只有一项          tail=null;        }else{          head.previous=null;        }      }else if(position==length-1){//删除最后一项        current=tail;        tail=current.previous;        tail.next=null;      }else{        while(index=length)return null;    }  }  this.isEmpty=function(){//判断链表是否为空    return length==0;  }  this.mylength=function(){//链表长度    return length;  }  this.print1=function(){//从头到尾打印链表    var current=head;    while(current){      console.log(current.element);      current=current.next;    }  }  this.print2=function(){//从尾到头打印链表    var current=tail;    while(current){      console.log(current.element);      current=current.previous;    }  }  this.getHead=function(){//获取头节点    return head;  }  this.getTail=function(){//获取尾节点    return tail;  }}var link=new DoubleLink();//实例化一个对象link.insertAt(0,'d');link.insertAt(1,'e');link.insertAt(2,'f');link.insertAt(3,'g');link.insertAt(4,'h');link.insertAt(5,'i');link.insertAt(6,'j');link.insertAt(7,'k');link.removeAt(7);link.removeAt(0);link.print1();//efghijlink.print2();//jihgfeconsole.log(link.getHead());//econsole.log(link.getTail());//jconsole.log(link.indexOf('f'));//1

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

BootStrap的文本编辑器组件Summernote使用详解

jquery提交数组数据用springmvc接收的方法

以上就是JS数据结构的双向链表定义的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2771905.html

(0)
上一篇 2025年3月8日 13:06:21
下一篇 2025年3月8日 13:06:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • js+css完善网页加载时的用户体验

    这次给大家带来,的注意事项有哪些,下面就是实战案例,一起来看一下。 需要材料: 一张loading动画的gif图片 基本逻辑: 模态框遮罩 + loading.gif动图,默认隐藏模态框页面开始发送Ajax请求数据时,显示模态框请求完成,隐…

    2025年3月8日
    200
  • AngularJS环境搭建步奏详解

    这次给大家带来AngularJS环境搭建步奏详解,AngularJS环境搭建的注意事项有哪些,下面就是实战案例,一起来看一下。 AngularJS是什么? AngularJS是一个开源Web应用程序框架。它最初是由MISKO Hevery和…

    编程技术 2025年3月8日
    200
  • Require调用js使用详解

    这次给大家带来Require调用js使用详解,Require调用js的注意事项有哪些,下面就是实战案例,一起来看一下。 在我最初开始写 JavaScript 函数时,通常是这样的: function fun1() { // some cod…

    编程技术 2025年3月8日
    200
  • JS自执行函数与jQuery扩展使用方法

    这次给大家带来JS自执行函数与jQuery扩展使用方法,JS自执行函数与jQuery扩展的注意事项有哪些,下面就是实战案例,一起来看一下。 我们通常将JS代码写在一个单独的JS文件中,然后在页面中引入该文件。但是,有时候引入后会碰到变量名或…

    编程技术 2025年3月8日
    200
  • JS模拟实现封装的方法

    这次给大家带来JS模拟实现封装的方法,JS模拟实现封装的注意事项有哪些,下面就是实战案例,一起来看一下。 前  言    继承是使用一个子类继承另一个父类,那么子类可以自动拥有父类中的所有属性和方法,这个过程叫做继承!  JS中有很多实现继…

    编程技术 2025年3月8日
    200
  • JS怎样检测浏览器内的脚本

    这次给大家带来JS怎样检测浏览器内的脚本,JS检测浏览器内脚本的注意事项有哪些,下面就是实战案例,一起来看一下。 以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Windows操作系统、移动设备和游戏系统。 var client…

    编程技术 2025年3月8日
    200
  • JS中typeof和类型判断(附代码)

    这次给大家带来JS中typeof和类型判断(附代码),JS中typeof和类型判断的注意事项有哪些,下面就是实战案例,一起来看一下。 typeof ECMAScript 有 5 种原始类型(primitive type),即 Undefin…

    编程技术 2025年3月8日
    200
  • JS的正则表达式应用

    这次给大家带来JS的正则表达式应用,JS正则表达式应用的注意事项有哪些,下面就是实战案例,一起来看一下。 今天和大家分享一些关于正则表达式的知识和在javascript中的应用。正则表达式简单却又不简单,比如以前我的老师给我们讲的时候就说这…

    编程技术 2025年3月8日
    200
  • AngularJs用户登录时交互及验证步奏详解

    这次给大家带来AngularJs用户登录时交互及验证步奏详解,AngularJs用户登录时交互及验证的注意事项有哪些,下面就是实战案例,一起来看一下。 1. 静态页面搭建及ng的form表单验证实现: 登录 登录后复制 2. 定义用户登录的…

    编程技术 2025年3月8日
    200
  • JS+H5+C3实现弹出窗口

    这次给大家带来JS+H5+C3实现弹出窗口,JS+H5+C3实现弹出窗口的注意事项有哪些,下面就是实战案例,一起来看一下。 源码: 1.demo.jsp 自定义弹出窗口 button{ width: 50px; height: 50px; …

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论