劍值offer66題之每日一題——第十四題
阿新 • • 發佈:2018-12-17
題目描述:
輸入一個連結串列,輸出該連結串列中倒數第k個結點。K=0.。。。。N。
思路:從連結串列頭到倒數第K個節點長度=正數第K個節點到連結串列尾,讓p,q指向表頭,先讓p指標走到正數第K個節點,然後讓P,q同時往後走,當p指標走到表尾時,q正好走到倒數第K個節點。
程式碼實現:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { //從連結串列頭到倒數第K個節點長度=正數第K個節點到連結串列尾,讓p,q指向表頭,先讓p指標走到正數第K個節點,然後讓P,q同時往後走 //當p指標走到表尾時,q正好走到倒數第K個節點。 ListNode *p,*q; p=pListHead; q=pListHead; unsigned int i=0; while(i<k) { if(!p) return nullptr; else{ p=p->next; i++; } } while(p) { p=p->next; q=q->next; } return q; }