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

輸入一個鏈表,輸出該鏈表中倒數第k個結點。
對於此題思路:
首先定義兩個指針p1,p2;i=0,i++;當i<k的時候,讓p1先給後面走(p1=p1->next);當i>=k時,讓p1,p2同時給後面走,此時p1和p2之間就相差k個,當p1走到最後的時候停下來,此時p2就是倒數第K個節點。(注意當最終p1走到最後的時候,若i<k,那麼該鏈表長度小於k ,此時返回一個NULL)

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        ListNode* p1=pListHead;
        ListNode* p2=pListHead;
        int i=0;
        while(p1!=NULL){
            if(i>=k){
                p2=p2->next;
                
            }
            ++i;
            p1=p1->next;
        }
        if(i<k)
            return NULL;
        return p2;
    }
};
發佈了45 篇原創文章 · 獲贊 25 · 訪問量 3066
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章