鏈表的定義如下:
struct ListNode{ int m_nValue; ListNode* m_pNext;};ListNode* FindKthToTail(ListNode*pListHead, unsigned int k){ if (pListHead == NULL||k==0) { return NULL; } ListNode *pAhead = pListHead;//前面的結點 ListNode*pBehind = pListHead;//后面跟著的結點 //k = k - 1; //while (k != 0) //{ // if (pAhead->m_pNext) // { // pAhead = pAhead->m_pNext; // } // else // { // return NULL; // } // --k; //} for (unsigned int i = 0; i < k - 1; ++i)//當遇見無符號數時,一定要倍加小心,當比較時一定要類型一致 { if (pAhead->m_pNext != NULL) { pAhead = pAhead->m_pNext; } else { return NULL; } } //當前面的結點走到根節點時,后面的結點指向了倒數第k個結點 while (pAhead->m_pNext != NULL) { pAhead = pAhead->m_pNext; pBehind = pBehind->m_pNext; } return pBehind;}新聞熱點
疑難解答