尋找一個單鏈表的倒數第K個節點

思路:設兩個指針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;
}
相關文章
相關標籤/搜索