且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

链表中倒数第k个结点

更新时间:2022-09-17 15:14:54

问题

从1开始计数,计算倒数第k个结点的指针。例如:

链表中倒数第k个结点

思路

整着数到第k,然后前后一块往后走,前边的走到头,后边的极为倒数第k个结点,图示

链表中倒数第k个结点

注意

  • 传入空指针
  • k大于结点的个数

代码

链表中倒数第k个结点
ListNode* LastNNode(ListNode *root, int n)
{
    if (root == NULL || n <=0)
        return NULL;
    ListNode *cur = root;
    ListNode *pre = root;
    int cnt = 0;
    while (pre != NULL)
    {
        cnt++;
        if (cnt == n)
            break;
        pre = pre->next;
    }
    if (cnt < n)
    {
        return NULL;
    }
    else
    {
        cur = root;
        while (pre->next != NULL)
        {
            pre = pre->next;
            cur = cur->next;
        }
        return cur;
    }
}
链表中倒数第k个结点

执行

链表中倒数第k个结点 View Code

 

推荐

算法与数据结构索引





本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/4215554.html,如需转载请自行联系原作者