查找链表中倒数第k个元素的节点

查找链表中倒数第k个元素的节点

遇到这道题了看了这位大哥的然后自己理解了下分享给大家

算法考虑通过2个指针,两个指针都指向第一个位置。当第一个指针指向k-1时候,第二个指针开始移动,然后第一个指针指向末尾的时候。第二个指针的指向

936002-20160414185123879-1130264033.png

还有另外一种情况,两种情况通过两个指针这个均满足

936002-20160414184635848-1331750727.png

//异常情况 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;
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容