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

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

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

      10,java雙向鏈表基礎代碼復現

      雙向鏈表總體來說和單鏈表差別不大,最大的區別就是node結構中多了一個pre指針(變量)指向前一個節點,因為有了之前的單鏈表基礎,雙向鏈表的復現問題少了很多,基本可以不參考老師的代碼自主寫下來。

      1、添加函數(加入到鏈表最后)

      因為此處的添加只需加到最后即可,按照單鏈表的添加,遍歷到最后并更改輔助節點的next指向node和node的pre指向temp即可。

      public void add(teamNode1 node){
              teamNode1 temp=head;
              while(true){
                  if(temp.next==null) break;
                  temp=temp.next;
              }
              temp.next=node;
              node.pre=temp;
          }

      2、顯示函數(打印出鏈表內的所有節點)

      今天測試的時候發現昨天好像寫錯了- -,今天發現最后一個節點的信息無法被打印。后來發現,判斷next為null的語句不同于其他函數,此處應該放在輸出語句之后,后移語句之前。

      public void list(){
              if(head.next==null){
                  System.out.println("鏈表為空");
                  return;
              }
              teamNode1 temp=head.next;
              while (true){
                  System.out.println(temp);
                  if(temp.next==null) break;
                  temp=temp.next;
              }
          }

      3、更新函數 與單鏈表的修改函數完全一致

      public void update(teamNode1 node){
              teamNode1 temp=head;
              boolean flag=false;
              while (true){
                  if(temp.next==null) break;
                  if(temp.no==node.no){
                      flag=true;
                      break;
                  }
                  temp=temp.next;
              }
              if(flag){
                  temp.name=node.name;
                  temp.point=node.point;
              }else {
                  System.out.println("未找到要修改的隊伍");
              }
          }

      4、刪除函數

      此處與單鏈表有較大不同,雙向鏈表可實現自我刪除,遍歷到要刪除的節點即可,而非要刪的節點的前一個節點。但有個要注意的就是當要刪除的函數為鏈表最后一個函數時,temp的next節點l為空,沒有pre指針,也無法將pre指向node,所以在修改前要先判斷。

      public void delete(int n){
              if(head.next==null) {
                  System.out.println("鏈表為空無法刪除");
                  return ;
              }
              boolean flag=false;
              teamNode1 temp=head;
              while(true){
                  if(temp.next==null) break;
                  if(temp.no==n){
                      flag=true;
                      break;
                  }
                  temp=temp.next;
              }
              if(flag&&temp.next!=null){
                  temp.pre.next=temp.next;
                  temp.next.pre=temp.pre;
              }else if(flag){
                  temp.pre.next=temp.next;
              }else {
                  System.out.println("未找到該位置隊伍,無法刪除");
              }
          }

      5、按順序加入函數 雙向鏈表addbyorder

      思路和單鏈表的按順序插入相似,此處的加入到中間,需要先用temp.next.no> node.no找到應該插入的位置與插入位置前一個節點的temp,然后從后往前更改,先更改temp的next節點即要插入位置的后一個節點名為last,將它的pre指向node。然后更改node的next指向last,更改node的pre指向temp,最后更改temp的next指向node。這是比較順的思路,不會導致有用的信息被覆蓋掉。

      另外的,與刪除鏈表相對應,此處要多考慮一種加入時要加入到鏈表尾部時的情況,相對于上面的情況,就不存在last這個節點了,因此不用修改node的next和last的pre。

      因為情況比較多,我放棄了布爾值的標識符,用int的標識符,賦予123值來區分情況,1為需要插入,即前后都有節點,2為鏈表中已有該編號隊伍,0為遍歷到最后發現沒有編號大于他的節點,也沒有等于它的節點,所以就是要加在結尾。

      public void addbyorder(teamNode1 node){
              teamNode1 temp=head;
              int flag=0;
              while (true){
                  if (temp.next==null) break;
                  if(temp.next.no== node.no){
                      flag=2;
                      break;
                  }
                  if (temp.next.no> node.no){
                      flag=1;
                      break;
                  }
                  temp=temp.next;
              }
              if(flag==1){
                  temp.next.pre=node;
                  node.next=temp.next;
                  node.pre=temp;
                  temp.next=node;
              }else if(flag==0){
                  temp.next=node;
                  node.pre=temp;
              }else {
                  System.out.println("已有該隊伍");
              }
          }

       

      posted @ 2022-03-23 16:56  水煮小白菜  閱讀(39)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一区二区三区四区激情视频| 无码囯产精品一区二区免费| 亚洲青青草视频在线播放| 亚洲 欧洲 无码 在线观看 | 92久久精品一区二区| 亚洲无av中文字幕在线| 婷婷五月综合丁香在线| 大地资源免费视频观看| 91精品亚洲一区二区三区| 中国女人和老外的毛片| 内射一区二区三区四区| 亚洲av无码精品蜜桃| 小婕子伦流澡到高潮h| 国产精品一区二区色综合| 成人3d动漫一区二区三区| 资源在线观看视频一区二区 | 一区二区三区鲁丝不卡| 国产明星精品无码AV换脸| 豆国产97在线 | 亚洲| 亚洲精品国产第一区二区| 黄色A级国产免费大片视频| 好爽毛片一区二区三区四| 九九热久久这里全是精品| 国产精品福利自产拍久久| 香蕉EEWW99国产精选免费 | 不卡乱辈伦在线看中文字幕| 顶级欧美熟妇xx| 国产免费午夜福利在线播放| 国产精品中文字幕在线| 亚洲精品无码久久久影院相关影片| 免费观看在线A级毛片| 国产卡一卡二卡三免费入口| 无码人妻久久久一区二区三区| 蜜臀91精品高清国产福利| 草草浮力影院| 日韩av综合免费在线| 中文字幕亚洲精品人妻| 国产成人精品性色av麻豆| 久久成人影院精品777| 亚洲美免无码中文字幕在线| √天堂资源网最新版在线|