【链表】如何查找单链表的倒数第n个指针

本文介绍两种高效算法来查找链表中倒数第N个节点:第一种算法通过两次遍历找到链表长度并定位目标节点;第二种算法采用双指针技巧,先移动一个指针N步,然后同时移动两个指针直至前导指针到达链表尾部,此时另一个指针即指向所求节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法一:第一次遍历到链表末尾,找到链表长度N;第二遍遍历,找到第N-n个节点。

算法二:设立两个指针,p1指向头节点,p2往前走n步,这样,p2与p1之间间隔n个指针。这样,当p2到达末尾是,p1则为倒数第N-n个节点。

 

Node *lastN(Node *head)

{

        Node *p1=head,*p2=head;

        for(int i=0;i<n;i++)

        {

                if(p2==NULL) 

                        return NULL;

                p2=p2->next;

        }

 

        while(p2)

        {

                p1=p1->next;

                p2=p2->next;

        }

        return p1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

robbie1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值