//输入一个链表,输出该链表中倒数第k个节点
//双指针问题:fast先走k步,slow再和fast一起走,当fast=NULL时,slow就是倒数第k个
//注意:要先判断k与链表长度的关系,防止指针越界
struct ListNode* middleNode(struct ListNode* head,int k)
{
struct ListNode* fast,*slow;
fast=slow=head;
//判断k与链表长度的关系
while(k--)
{
//fast先走k步
fast=fast->next;
//k大于链表的长度
if(fast==NULL)
{
return NULL;
}
}
while(fast)
{
slow=slow->next;
fast=fast->next;
}
return slow;
}
//输入一个链表,输出该链表中倒数第k个节点
//双指针问题:fast先走k步,slow再和fast一起走,当fast=NULL时,slow就是倒数第k个
//注意:要先判断k与链表长度的关系,防止指针越界
struct ListNode* middleNode(struct ListNode* head,int k)
{
struct ListNode* fast,*slow;
fast=slow=head;
//判断k与链表长度的关系
while(k--)
{
//fast先走k步
fast=fast->next;
//k大于链表的长度
if(fast==NULL)
{
return NULL;
}
}
while(fast)
{
slow=slow->next;
fast=fast->next;
}
return slow;
}
11-24
971
09-27
94
12-04