/**输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead ListNode类
* @param k int整型
* @return ListNode类
*/
struct ListNode* FindKthToTail(struct ListNode* pHead, int k) {
// write code here
if (pHead == NULL)//判断是否为空
{
return NULL;
}
struct ListNode* p = pHead;//链表指针
int i = 0;
int j = 0;
while (p->next != NULL)//链表长度
{
p = p->next;
j++;
}
if (j + 1<k)//判断k是否大于链表长度
{
return NULL;
}
i = j + 1 - k;//i标记K字符位置
j = 0;
p = pHead;//再次遍历
while (i != j)
{
p = p->next;
j++;
}
return p;
}
牛客网剑指offer,有一张单链表,编写函数求倒数第K个结点
这段代码实现了一个功能,即输入一个链表和整数k,返回链表中从倒数第k个节点到尾部的所有节点。首先判断链表是否为空和k是否大于链表长度,然后计算链表长度,最后通过双指针法找到倒数第k个节点并返回。

172万+

被折叠的 条评论
为什么被折叠?



