题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思路
使用快慢指针法,让快指针先走k步,然后再让慢指针开始走,当快指针到达链表尾部时,慢指针刚好到达倒数第k个节点。
C++代码实现:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead==NULL){ return NULL; } ListNode *p1,*p2; p1=pListHead; int count=0; int pos=k; while(pos>0 && p1!=NULL){ p1=p1->next; pos--; count++; } //如果链表长度不到K,输入不合法,返回NULL if(count!=k){ return NULL; } p2=pListHead; while(p1!=NULL){ p1=p1->next; p2=p2->next; } return p2; } };
原文地址:https://www.cnblogs.com/fancy-li/p/11614388.html
时间: 2024-10-08 00:59:22