美文网首页考研数据结构
查找链表倒数第k位置的节点

查找链表倒数第k位置的节点

作者: 飞白非白 | 来源:发表于2018-12-04 11:26 被阅读2次
// 求链表的倒数第K个节点:主要思路设置两个指针,刚开始都指向链
// 表的第一个节点,第一个指针先走k-1步,然后两个一块走,直到第
//一个指针的下一位为nullptr,则第二个指针所指的位置就是倒数第k个节点。

struct ListNode{
    int value;
    ListNode* next;
};
ListNode* findKthToTail(ListNode *phead,unsigned int k)
{
    if (k == 0)/
        return nullptr;
    if (phead == nullptr)
        return nullptr;
    ListNode *p1 = phead;
    ListNode *p2 = phead;
    for (int i = 1; i < k; ++i)
    {
        if (p1->next == nullptr){//若k比本身链表的最大长度还大则直接返回nullptr
            return nullptr;
        }
        p1 = p1->next;
    }
    while (p1->next != nullptr)
    {
        p1 = p1->next;
        p2 = p2 ->next;
    }
    return p2;
}

相关文章

网友评论

    本文标题:查找链表倒数第k位置的节点

    本文链接:https://www.haomeiwen.com/subject/pflmcqtx.html