<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      javascript中的鏈表結構—從鏈表中刪除元素

       

      1.概念

        上一個博文我們講到鏈表,其中有一個方法remove()是暫時注釋的,這個方法有點復雜,需要添加一個Previous()方法找到要刪除的元素的前一個節點,這一個博文我們來分析一下這個remove()方法。

        從鏈表中刪除節點的時候,需要先找到這個待刪除節點的前面的節點。找到這個節點之后修改它的next屬性,使其指向待刪除節點的下一個節點,這樣就把待刪除節點給刪除了,是不是很簡單呢?但是問題來了,我們是不是要找到待刪除節點的前面一個節點呢?這樣就需要添加一個findPrevious()方法來做這件事情。

        findPrevious()方法遍歷鏈表中的元素,檢查每一個節點的下一個節點是否存儲著待刪除數據。如果找到,返回該節點(即前面的節點),這樣就可以修改它的next屬性了。findPrevious()方法定義如下:

      function findPrevious(item){
          var currNode =     this.head;
          while ( (currNode.next != null) && (currNode.next.element != item) ){
              currNode = currNode.next;
          }
          return currNode;
      }

        有了這個findPrevious()方法之后就可以考慮如何寫這個remove()方法了。代碼如下:

      function remove(item){
          var preNode = this.findPrevious(item);
          if(preNode.next != null){
              preNode.next = preNode.next.next;
          }
      }

      該方法中有一句preNode.next = preNode.next.next;這個使用了javascript中的對象屬性,看起來有點奇怪,但是完全能說得通。

       

      2.代碼實現

      下面的是完整的代碼和測試代碼:

      function Node(element) {
          this.element = element;
          this.next = null;
      }
      
      function LList() {
          this.head = new Node('head');
          this.find = find;
          this.insert = insert;
          this.findPrevious = findPrevious;
          this.remove = remove;
          this.display = display;
      }
      
      function find(item) {
          var currNode = this.head;
          while(currNode.element != item) {
              currNode = currNode.next;
          }
          return currNode;
      }
      
      //插入一個元素
      function insert(newElement, item) {
          var newNode = new Node(newElement);
          var current = this.find(item);
          newNode.next = current.next;
          current.next = newNode;
      }
      
      function findPrevious(item){
          var currNode =     this.head;
          while ( (currNode.next != null) && (currNode.next.element != item) ){
              currNode = currNode.next;
          }
          return currNode;
      }
      
      function remove(item){
          var preNode = this.findPrevious(item);
          if(preNode.next != null){
              preNode.next = preNode.next.next;
          }
      }
      
      function display() {
          var currNode = this.head;
          while(!(currNode.next == null)) {
              document.write(currNode.next.element + '&nbsp;');
              currNode = currNode.next;
          }
      }
      
      //測試程序
      var cities = new LList();
      cities.insert("Conway", "head");
      cities.insert("Russellville", "Conway");
      cities.insert("Carlise", "Russellville");
      cities.insert("Alma", "Carlise");
      cities.display();
      document.write('<br>');
      cities.remove('Carlise');
      cities.display();

      最后的輸出結果如下:

       

      posted @ 2016-09-19 23:33  nd  閱讀(1888)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 99久久无码私人网站| 午夜国产精品福利一二| 把腿张开ji巴cao死你h| 久久视频这里只精品| 日韩人妻一区中文字幕| 国产色悠悠在线免费观看| 国产av永久无码天堂影院| 激情综合网五月婷婷| 特黄三级又爽又粗又大| 国产精品青草久久久久福利99| 久久综合九色综合97婷婷 | 国产精品午夜无码AV天美传媒| 国产99久一区二区三区a片| 成人av天堂网在线观看| 国产精品无码久久久久| 国产精品无遮挡猛进猛出| 偷看少妇自慰xxxx| 亚洲综合国产一区二区三区| 手游| 中文字幕av一区二区| 女人张开腿让男人桶爽| 精品久久一线二线三线区| 亚洲一区二区中文字幕| 2019亚洲午夜无码天堂| 一区二区中文字幕久久| 亚洲国产欧美在线人成| 2021亚洲va在线va天堂va国产| 老熟女多次高潮露脸视频| 亚洲乱码一区二区三区视色| 插插射啊爱视频日a级| 精品亚洲精品日韩精品| 干老熟女干老穴干老女人| 免费无码AV一区二区波多野结衣| 午夜福利日本一区二区无码| 四虎库影成人在线播放| 东京热加勒比无码少妇| 欧美成人精品一区二区三区免费| 无码免费大香伊蕉在人线国产| 亚洲综合不卡一区二区三区 | 在线中文字幕亚洲日韩2020| 中文字幕va一区二区三区|