思路:設兩個指針pStart,pEnd,兩者之間差K個節點,當pEnd到達末尾的時候,pStart恰好指向倒數第K個節點spa
LinkNode * findKthNode(LinkNode * pHead, int K) { if(pHead == NULL) return NULL; LinkNode * pStart = 0; LinkNode * pEnd = 0; int i = 0; for (pEnd = pHead, pStart = pHead; pEnd != NULL; pEnd = pEnd->_next) { if(i < K) { ++i; continue; } else pStart = pStart->_next; } if (i < K) return NULL; else return pStart; }
int main() { LinkNode * pHead = 0; int a[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14}; for (int i = 0; i<sizeof(a) / sizeof(a[0]); i++) { createLink(pHead,a[i]); } printLink(pHead); cout<<"倒數第12個節點是"<<findKthNode(pHead,12)->_value<<"\n"; return 0; }