真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript數(shù)據(jù)結(jié)構(gòu)之雙向鏈表定義與使用方法示例

本文實(shí)例講述了JavaScript數(shù)據(jù)結(jié)構(gòu)之雙向鏈表定義與使用方法。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靖宇企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、做網(wǎng)站,靖宇網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

雙向鏈表和普通鏈表的區(qū)別在于,在鏈表中,一個(gè)節(jié)點(diǎn)只有鏈向下一個(gè)節(jié)點(diǎn)的鏈接,而在雙向鏈表中,鏈接是雙向的:一個(gè)鏈向下一個(gè)元素,另一個(gè)鏈向前一個(gè)元素。

雙向鏈表提供了兩種迭代列表的方法:從頭到尾,或者反過來。我們也可以訪問一個(gè)特定節(jié)點(diǎn)的下一個(gè)或前一個(gè)元素。在單向鏈表中,如果迭代列表時(shí)錯(cuò)過了要找的元素,就需要回到列表起點(diǎn),重新開始迭代。這是雙向鏈表的一個(gè)優(yōu)點(diǎn)。

function DoubleLink(){
  var length=0;//鏈表長度
  var head=null;//頭結(jié)點(diǎn)的引用
  var tail=null;//尾節(jié)點(diǎn)的引用
  function Node(e){
    this.element=e;
    this.next=null;
    this.previous=null;
  }
  this.insertAt=function(position,e){//在任意位置添加節(jié)點(diǎn)
    if(position>=0&&position<=length){//判斷邊界
      var node=new Node(e);
      var current=head;
      var previous;
      var index=0;
      if(position==0){//在第一個(gè)位置添加
        if(!head){//鏈表為空的時(shí)候添加第一個(gè)節(jié)點(diǎn)
          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)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(){//獲取頭節(jié)點(diǎn)
    return head;
  }
  this.getTail=function(){//獲取尾節(jié)點(diǎn)
    return tail;
  }
}
var link=new DoubleLink();//實(shí)例化一個(gè)對(duì)象
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();//efghij
link.print2();//jihgfe
console.log(link.getHead());//e
console.log(link.getTail());//j
console.log(link.indexOf('f'));//1

運(yùn)行結(jié)果:

JavaScript數(shù)據(jù)結(jié)構(gòu)之雙向鏈表定義與使用方法示例

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。


文章題目:JavaScript數(shù)據(jù)結(jié)構(gòu)之雙向鏈表定義與使用方法示例
網(wǎng)站鏈接:http://weahome.cn/article/jeogjp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部