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

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

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

      四種方式實現--從尾到頭輸出鏈表

      四種方式實現--從尾到頭輸出鏈表

        方法一:借用棧倒序輸出鏈表

        方法二:先翻轉鏈表,再順序輸出

        方法三:遞歸實現,一個字妙,兩個字很妙,三個字太妙了

        方法四:用數組實現

        方法一:借用棧倒序輸出鏈表
              因為棧是先進后出,把鏈表中的元素存進棧中,鏈表前面的元素在棧底,后面的元素在棧頂,鏈表后面的元素先出棧

        方法二:先翻轉鏈表,再按順序打印(主要是想自己實現單鏈表的翻轉,這種實現方式破壞了鏈表的結構,當然再翻轉一下就還原了)
                       翻轉鏈表的步驟:
                            1:將當前節點的next節點指向他以前的前一個節點
                            2:當前節點下移一位
                            3:如果是最后一個節點,就把它的next節點指向它以前的前一個節點,并推出循環

        方法三:用遞歸實現
                       很誠實的說盜用了別人的思想,真的太妙了,完全能看出你是否真的體會了遞歸的原理
                       正如那位哥們所說,遞歸就是一個進棧出棧的過程,鏈表前面的元素先進棧,在棧底,后面的元素后進棧,在棧頂,先出棧,哈哈。。。

        方法四:借用數組實現,跟用棧實現的方式差不多, LoveJenny說的實現方式跟這種方式是一樣的,空間復雜度都是O(n)

      源碼
      //三種方式實現--從尾到頭輸出鏈表
      #include <stack>
      #include
      <string>
      #include
      <iostream>
      usingnamespace std;

      class OutFromEnd
      {
      public:
      typedef
      struct node1
      {
      int data;
      node1
      * next;
      node1(
      int d):data(d),next(NULL){}
      } node;

      OutFromEnd()
      {
      head
      =cur=new node(-1);
      }

      void add(int data)
      {
      node
      * tmp=new node(data);
      cur
      ->next=tmp;
      cur
      =tmp;
      }

      //借用棧倒序輸出鏈表
      //因為棧是先進后出,把鏈表中的元素存進棧中,鏈表前面的元素在棧底,后面的元素在棧頂,鏈表后面的元素先出棧
      void stackMethod()
      {
      if(NULL==head || NULL==head->next)
      {
      return;
      }

      node
      * tmp=head->next;
      stack
      <int> s;

      while(tmp!=NULL)
      {
      s.push(tmp
      ->data);
      tmp
      =tmp->next;
      }

      while(!s.empty())
      {
      cout
      <<s.top()<<"\t";
      s.pop();
      }
      }

      /*
      先翻轉鏈表,再按順序打印(主要是想自己實現單鏈表的翻轉,這種實現方式破壞了鏈表的結構,當然再翻轉一下就還原了)
      翻轉鏈表的步驟:
      1:將當前節點的next節點指向他以前的前一個節點
      2:當前節點下移一位
      3:如果是最后一個節點,就把它的next節點指向它以前的前一個節點,并推出循環
      */
      void reverse()
      {
      if(NULL==head || NULL==head->next)
      {
      return;
      }
      cur
      =head->next;

      node
      * prev=NULL;
      node
      * pcur=head->next;
      node
      * next;
      while(pcur!=NULL)
      {
      if(pcur->next==NULL)
      {
      pcur
      ->next=prev;
      break;
      }
      next
      =pcur->next;
      pcur
      ->next=prev;
      prev
      =pcur;
      pcur
      =next;
      }

      head
      ->next=pcur;

      node
      * tmp=head->next;
      while(tmp!=NULL)
      {
      cout
      <<tmp->data<<"\t";
      tmp
      =tmp->next;
      }
      }

      void print3()
      {
      recursion(head
      ->next);
      }

      //用遞歸實現
      //很誠實的說盜用了別人的思想,真的太妙了,完全能看出你是否真的體會了遞歸的原理
      //正如那位哥們所說,遞歸就是一個進棧出棧的過程,鏈表前面的元素先進棧,在棧底,后面的元素后進棧,在棧頂,先出棧,哈哈。。。
      void recursion(node* head)
      {
      if(NULL==head)
      {
      return;
      }

      if(head->next!=NULL)
      {
      recursion(head
      ->next);
      }

      //如果把這句放在第二個if前面,那就是從頭到尾輸出鏈表,曾經的你或許是用while或者用for循環輸出鏈表,現在你又多了一種方式
      cout<<head->data<<"\t";
      }

      //借用數組實現
      void print4()
      {
      node
      * tmp=head->next;
      int len=0;
      while(tmp!=NULL)
      {
      ++len;
      tmp
      =tmp->next;
      }
      tmp
      =head->next;
      int* A=newint[len] ;
      for(int i=len-1;i>=0;i--)
      {
      A[i]
      =tmp->data;
      tmp
      =tmp->next;
      }

      for(int i=0;i<len;i++)
      {
      cout
      <<A[i]<<"\t";
      }
      delete [] A;
      }


      private :
      node
      *head,*cur;
      };
      posted @ 2011-08-01 19:33  古文觀芷  閱讀(5116)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 久久精品国产久精国产| 色综合久久综合久鬼色88| 国产高清在线男人的天堂| 特黄 做受又硬又粗又大视频| 亚洲一二三四区中文字幕| 亚洲国产精品区一区二区| 日区中文字幕一区二区| 99国精品午夜福利视频不卡99| 成年午夜无码av片在线观看| 国产精品午夜福利资源| 亚洲中文字幕无码久久2017 | 国产中年熟女高潮大集合| 中文字幕乱码在线播放| 玩弄丰满少妇人妻视频| 亚洲成a∨人片在线观看不卡| av综合亚洲一区二区| 精品亚洲精品日韩精品| 久久人妻精品白浆国产| 无码专区人妻系列日韩精品少妇| 极品尤物被啪到呻吟喷水| 国产欧美一区二区三区免费视频| 亚洲精品专区在线观看| 免费看欧美全黄成人片| 99久久亚洲综合精品成人网| 色噜噜在线视频免费观看| 激情综合色综合啪啪开心| 嘉黎县| 亚洲天堂一区二区三区四区| 国产中文字幕精品免费| 荔波县| 日本熟妇浓毛| 精品国产色情一区二区三区| 潮喷失禁大喷水无码| 国产精品熟女亚洲av麻豆| 日本国产精品第一页久久 | 悠悠人体艺术视频在线播放| 5D肉蒲团之性战奶水欧美| 灵寿县| 最新的国产成人精品2022| 国产精品国产三级国AV| 肥臀浪妇太爽了快点再快点|