查找单链表的倒数第k个节点,要求只能遍历一次链表,这里和之前所写的查找中间节点是一样的道理还是利用快慢指针问题来进行操作,但是这次和上次有一些小小的不同,这里是先让fast快指针先进行走K步,然后快慢指针同时走当fast指针走到最后的时候慢指针就停在了倒数第K位置。
查找单链表的倒数第k个节点,要求只能遍历一次链表,这里和之前所写的查找中间节点是一样的道理还是利用快慢指针问题来进行操作,但是这次和上次有一些小小的不同,这里是先让fast快指针先进行走K步,然后快慢指针同时走当fast指针走到最后的时候慢指针就停在了倒数第K位置。
SListNode* SListFindTailKNode(SListNode* list, int k)
{
assert(list);
SListNode *fast = list;
SListNode *slow = list;
while (k)
{
k--;
fast = fast->_next;
}
while(fast != NULL)
{
fast = fast->_next;
slow = slow->_next;
}
return slow;
}