链表中倒数第K个节点

面试题22:输入一个链表,输出该链表中倒数第k个结点。

/*
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 == nullptr || k == 0)    //如果头指针为空或者返回倒数第0个节点,则返回空指针
            return nullptr;
       
        ListNode* pAhead = pListHead;
        ListNode* pBehind = pListHead;
        
        for(unsigned int i = 0; i < k - 1; ++i){
            if (pAhead->next == nullptr)    //如果K大于链表长度,则返回空指针
                return nullptr;
            pAhead = pAhead->next;
        }
        
        while(pAhead->next != nullptr){
            pAhead = pAhead->next;
            pBehind = pBehind->next;
        }
        
        return pBehind;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章