在 link list 中寻找倒数第N个节点。

寻找倒数第n节点的时候一般都是先遍历一次之后获取了总的数量之后获得正数的次数,但是采取以下方法之后可以在只遍历一次的时候就获取到想知道的数据。

优点:在普通的时候获取的数据一般是需要便利两次,这样的话获取很大的list的很后边的数据的话消耗的时间比较长,但是如果只遍历一遍的话就会好很多。

Node* get_last_nth( Node * head, int n)

{

 

if (n < 1) return NULL;

Node* p1 = head;

Node* p2 = head;

while (p1 && n– > 0) p1 = p1-> next ;

if (n > 0) return NULL;

while (p1)

{

p1 = p1-> next ;

p2 = p2-> next ;

}

return p2;

}