• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            jake1036

            面試100 -09 單鏈表中查找倒數第K個元素

                  單鏈表中查找倒數第K個元素

                  利用窗口機制解決問題,提高效率 ,查找一個單鏈表中,倒數第K個節點。
             方法(1) 首先查找到整個鏈表中的元素個數, 然后再一次遍歷該數組,找到第n-k+1個元素,即為所求。
                    缺點:這需要兩次遍歷鏈表,當鏈表中的元素個數很多的時候,耗費時間。
              方法(2):
                   定義兩個指針p,q,初始時都指向頭節點間,然后q向后移動,p則保持不動。
                   當P移動到第K個位置的時候,pq兩個節點同時向后移動,當q達到鏈表尾部的時候, p節點所指向的位置,即為所求。
                   這里充分利用了一個窗口機制,使用兩個間隔為K的指針,來達到目的。     
              延伸:
                   求出一個排序完畢的數組中,相同數目元素出現次數大于100的元素。
                   這也需要一個窗口機制。即比較a[i] 與a[i+100]兩個元素即可 。 

               代碼如下:
               

            #include <iostream>
             
            using namespace std ;
             
             
            struct Node 
             
            {
                
            int data ;
                Node 
            * next ;        
             }
             ;
             
            const int K = 4 ;
             
             
            void buildlist(Node * root , int x) ;
             
            void findK(Node * root);
             
             
             
            int main()
             
            {
               Node 
            * root = 0 ; //頭結點 
               root = (Node *) malloc(sizeof(Node)) ;       
               root
            ->data = 0;
               root
            ->next = 0 ; 
                   
               
            int x ;
               
            while(1)
               
            {
                 cin
            >>x ;
                 
            if(x == 0)
                  
            break ;
                        
                buildlist(root , x);
               }

               findK(root) ;
               system(
            "pause") ;
               
            return 0 ;    
             }

             
             
             
             
             
             
            void buildlist(Node * root , int x) 
             
            {
             
               
                Node 
            *  p = (Node *) malloc(sizeof(Node)) ; //創建新的表節點       
                p->data = x ;
                p
            ->next = root->next ;          
                root
            ->next = p ; 
                           
              }
             
             
            void findK(Node * root)
             
            {
               
            if(root == 0)
                 
            return ;
               
            int i = 0 ;
               Node 
            * p = root ;    //初始化均指向頭結點 
               Node * q = root ;
               
            bool flag = false ;  //判讀是否存在倒數第k個數字 
               
               
            while(p->next) //使用頭結點 
               {
                  i
            ++ ;
                  
            if(i>=K)  //直到找到第 
                  {
                    q 
            = q->next ;
                    flag 
            = true ;
                  }

                  p 
            = p ->next ;    
               }

               
            if(flag)
                cout
            <<q->data<<endl  ;  
               
            else
                cout
            <<"error"<<endl  ;
               
                    
             }
             
              
              


             

            posted on 2011-05-16 16:23 kahn 閱讀(1415) 評論(0)  編輯 收藏 引用 所屬分類: 算法相關

            中文字幕无码久久人妻| 国产精品久久久天天影视| 久久精品亚洲福利| 伊人久久大香线蕉综合5g| 国内精品久久久久久久久电影网| 久久亚洲精品人成综合网| 国产99久久久久久免费看 | 热久久视久久精品18| 99久久超碰中文字幕伊人| 要久久爱在线免费观看| 久久中文字幕一区二区| 久久精品aⅴ无码中文字字幕不卡| 久久久受www免费人成| 欧美一区二区精品久久| 久久久无码精品亚洲日韩蜜臀浪潮| 欧美性猛交xxxx免费看久久久| 久久久久久综合一区中文字幕| 精品久久久中文字幕人妻 | 91精品国产综合久久香蕉| 日韩人妻无码精品久久免费一| 亚洲国产天堂久久综合| 久久综合狠狠综合久久97色| 狠狠色综合久久久久尤物| 久久精品国产91久久麻豆自制| 久久久亚洲欧洲日产国码二区 | 亚洲七七久久精品中文国产| 久久99国产一区二区三区| 国产成人久久精品二区三区| 一级做a爰片久久毛片人呢| 久久免费国产精品一区二区| 久久久久久久尹人综合网亚洲| 国产一久久香蕉国产线看观看| 99久久国产综合精品麻豆| 成人久久综合网| 亚洲国产精久久久久久久| 国产免费久久精品99久久| 久久国产精品免费一区二区三区| 精品国产综合区久久久久久 | 久久天天躁狠狠躁夜夜躁2014| 久久久久久久免费视频| 久久一日本道色综合久久|