宝哥软件园

JavaScript数据结构之双向链表定义与使用方法示例

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

本文实例讲述了Java脚本语言数据结构之双向链表定义与使用方法。分享给大家供大家参考,具体如下:

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

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

函数double link(){ var length=0;//链表长度var head=null/头结点的引用var tail=null/尾节点的引用函数节点(e){此。元素=e;this . next=null this . previous=null } this . insertat=函数(位置,e){//在任意位置添加节点如果(位置=0位置=长度){//判断边界var节点=新节点(e );定义变量电流=水头;定义变量以前;定义变量索引=0;如果(位置==0){//在第一个位置添加if(!head){//链表为空的时候添加第一个节点head=节点;尾部=节点;} else { current=headnode.next=当前;当前.上一个=节点;head=节点;} }else if(position==length){//在链表末尾添加电流=尾部;current.next=节点;node.previous=currenttail=节点;} else { while(索引位置){ previous=currentcurrent=current.next指数;}上一个.下一个=节点;node . previous=previous node . next=当前;当前.上一个=节点;}长度;返回真;} else { return null } } this . remove at=函数(位置){//删除任意位置的节点如果(位置-1位置长度){//边界判断定义变量电流=水头;定义变量以前;定义变量索引=0;如果(位置==0){//删除第一个位置的节点head=current.nextif(长度==1){//如果只有一项tail=null } else { head . previous=null } } else if(位置==长度-1){//删除最后一项电流=尾部;tail=current . previoustail . next=null } else { while(索引位置){ previous=currentcurrent=current.next指数;}上一个。下一个=当前。接下来;当前。下一个。previous=previous}长度-;返回current . element } else { return null } } this . indexof=function(e){//获取节点位置,从头开始数定义变量电流=水头;定义变量索引=0;while(当前){ if(当前。元素==e){返回索引;}当前=当前。接下来;指数;如果(索引=长度)返回null } } this . isempty=function(){//判断链表是否为空返回长度==0;} this.mylength=function(){//链表长度返回长度;} this.print1=function(){//从头到尾打印链表定义变量电流=水头;while(当前){ console。日志(当前。元素);current=current . next } } this . print 2=function(){//从尾到头打印链表定义变量电流=尾部;while(当前){ console。日志(当前。元素);current=current . previous } } this . GetHead=function(){//获取头节点返回头;} this.getTail=function(){//获取尾节点返回尾部;} } var link=new double link();//实例化一个对象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 ');链接。在(7)处移除;链接。在(0)处移除;链接。print 1();//efghijlink。print 2();//jigfenconsol。日志(链接。getHead());//经济鞋底。日志(链接。GetTail());//jconsole。日志(链接。indexof(' f ');//1运行结果:

更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、0103010。

希望本文对JavaScript编程有所帮助。

更多资讯
游戏推荐
更多+