單鏈表之:如何快速找到倒數第n個節點

 題目:如何查找單鏈表的倒數第n個指針算法

算法一:第一次遍歷到鏈表末尾,找到鏈表長度N;第二遍遍歷,找到第N-n個節點。ide

算法二:設立兩個指針,p1指向頭節點,p2往前走n步,這樣,p2與p1之間間隔n個指針。這樣,當p2到達末尾是,p1則爲倒數第N-n個節點。spa

 

  
  
  
  
  1. Node *lastN(Node *head) 
  2.        Node *p1=head,*p2=head; 
  3.  
  4.        for(int i=0;i<n;i++) 
  5.        { 
  6.                if(p2==NULL)  
  7.                        return NULL; 
  8.                p2=p2->next; 
  9.        } 
  10.  
  11.        while(p2) 
  12.        { 
  13.                p1=p1->next; 
  14.                p2=p2->next; 
  15.        } 
  16.  
  17.        return p1; 
相關文章
相關標籤/搜索