題目:如何查找單鏈表的倒數第n個指針算法
算法一:第一次遍歷到鏈表末尾,找到鏈表長度N;第二遍遍歷,找到第N-n個節點。ide
算法二:設立兩個指針,p1指向頭節點,p2往前走n步,這樣,p2與p1之間間隔n個指針。這樣,當p2到達末尾是,p1則爲倒數第N-n個節點。spa
- Node *lastN(Node *head)
- {
- Node *p1=head,*p2=head;
- for(int i=0;i<n;i++)
- {
- if(p2==NULL)
- return NULL;
- p2=p2->next;
- }
- while(p2)
- {
- p1=p1->next;
- p2=p2->next;
- }
- return p1;
- }