C++---2 輸入一個鏈表,輸出該鏈表中倒數第k個結點。

定義兩個結點p,q指向頭節點,p先走k步,然後,p,q同時走,直到p走到最後null爲止,此時,q就是倒數k位置。

class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        ListNode* p=pListHead;
        ListNode* q=pListHead;
        for(int i=0;i<k;i++){  //到k值跳出循環
            if(p!=NULL){
                p=p->next;
            }
            else
                return NULL;
        }
        while(p!=NULL){
            p=p->next;
            q=q->next;
        }
        return q;
    }
};
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        ListNode* p=pListHead;
        ListNode* q=pListHead;
        while(k>0 && p!=NULL){
            p=p->next;
            k--;
        }
        if(k>0 && p==NULL)
            return NULL;
        while(p!=NULL){
            p=p->next;
            q=q->next;
        }
        return q;
 
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章