大致思路是:
首先用到两个指针,第一个指针先走k-1个节点,第二个指针此时指向链表头,然后用while循环,两个指针分别向后移动,直到开始的那个指针走到链表尾,此时第二个指针所指的节点即倒数第k个节点:
在这其中需要对边界值进行判断,如果节点少于k个,或者输入的k的值为0,这种意外情况也需要考虑。
ListNode * FindKthToTail(ListNode * pListHead,unsigned int k)
{
if(pListHead == NULL)
return NULL;
ListNode *pAhead = pListHead;
ListNode *pBehind = NULL;
for(int i = 0; i