查找链表中倒数第k个元素的节点
遇到这道题了看了这位大哥的然后自己理解了下分享给大家
算法考虑通过2个指针,两个指针都指向第一个位置。当第一个指针指向k-1时候,第二个指针开始移动,然后第一个指针指向末尾的时候。第二个指针的指向
还有另外一种情况,两种情况通过两个指针这个均满足
//异常情况 i. p_header为空 2.m大于链表的长度。3.m<=0
ListNode*FindKPath(ListNode*p_header,int m){
if (p_header == NULL) {
return NULL;
}
if (m<=0) {
return NULL;
}
ListNode*pHeader = p_header;
ListNode*pFooter = p_header;
for (int i=1; i<m; i++) {
if (pHeader->next == NULL) {
return NULL;
}
pHeader = pHeader->next;
}
while (pHeader->next) {
pHeader = pHeader->next;
pFooter = pFooter->next;
}
return pFooter;
}