题目:如何查找单链表的倒数第n个指针

算法一:第一次遍历到链表末尾,找到链表长度N;第二遍遍历,找到第N-n个节点。

算法二:设立两个指针,p1指向头节点,p2往前走n步,这样,p2与p1之间间隔n个指针。这样,当p2到达末尾是,p1则为倒数第N-n个节点。

 

 
  
  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; 
  18. }