您现在的位置是:首页 > 编程 > 

删除链表的倒数第 个结点(C++)

2025-07-27 06:03:45
删除链表的倒数第 个结点(C++) 删除链表的倒数第 个结点给你一个链表,删除链表的倒数第 n **个结点,并且返回链表的头结点。示例 1:代码语言:javascript代码运行次数:0运行复制输入: head = [1,2,,4,5], n = 2 输出: [1,2,,5]示例 2:代码语言:javascript代码运行次数:0运行复制输入: head = [1], n = 1 输出

删除链表的倒数第 个结点(C++)

删除链表的倒数第 个结点

给你一个链表,删除链表的倒数第 n **个结点,并且返回链表的头结点。

示例 1:

代码语言:javascript代码运行次数:0运行复制
输入: head = [1,2,,4,5], n = 2
输出: [1,2,,5]

示例 2:

代码语言:javascript代码运行次数:0运行复制
输入: head = [1], n = 1
输出: []

示例 :

代码语言:javascript代码运行次数:0运行复制
输入: head = [1,2], n = 1
输出: [1]

提示:

  • 链表中结点的数目为 sz
  • 1 <= sz <= 0
  • 0 <= ode.val <= 100
  • 1 <= n <= sz

我的代码:

代码语言:javascript代码运行次数:0运行复制
/**clike
 * Definition for singly-linked list.
 * struct Listode {
 *     int val;
 *     Listode *next;
 *     Listode() : val(0), next(nullptr) {}
 *     Listode(int x) : val(x), next(nullptr) {}
 *     Listode(int x, Listode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    // 经典双指针算法 典型例题 
    // 可以通过 两个指针来在不知道链表长度的前提下
    // 就可以确定需要删除的具体位置
    Listode* removethFromEnd(Listode* head, int n) {
        int i = 0;
        struct Listode* p, *q;
        p = q = (struct Listode*) malloc(sizeof (struct Listode));
        
        p->next = head;
        q->next = head;

        // 先让前指针移动n个单位
        while(i < n) 
        {
            q = q->next;
            i ++;
        }

        // 然后再让q,p一起移动, 当q移动到ULL的时候
        // 就是p移动到倒数第n个位置的时候
        while(q->next != ULL)
        {
            q = q->next;
            p = p->next;
        }

        if (p->next == head) // 如果链表没有变过 就直接返回
        {
            return head->next;
        }
        else  
        { 
            // 这一步就是删掉倒数第n个点
            p->next = p->next->next;
        }
        return head;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2022-10-19,如有侵权请联系 cloudcommunity@tencent 删除链表算法指针c++int

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1160551.html

相关标签:无
上传时间: 2025-07-20 14:07:43
留言与评论(共有 12 条评论)
本站网友 嘉兴商铺
3分钟前 发表
5]示例 2:代码语言:javascript代码运行次数:0运行复制输入: head = [1]
本站网友 融资性担保公司管理暂行办法
15分钟前 发表
并且返回链表的头结点
本站网友 动漫产业基地
21分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看链表算法指针c++int
本站网友 城乡居民基本养老保险制度
23分钟前 发表
本站网友 茯苓的功效与作用禁忌
20分钟前 发表
并且返回链表的头结点
本站网友 天津大学仁爱学院邮编
9分钟前 发表
5]示例 2:代码语言:javascript代码运行次数:0运行复制输入: head = [1]
本站网友 wow隐藏的信息
1分钟前 发表
原始发表:2022-10-19
本站网友 断指再植
16分钟前 发表
n = 1 输出: [1]提示:链表中结点的数目为 sz1 <= sz <= 00 <= ode.val <= 1001 <= n <= sz我的代码:代码语言:javascript代码运行次数:0运行复制/**clike * Definition for singly-linked list. * struct Listode { * int val; * Listode *next; * Listode()
本站网友 山东会计人员继续教育网
23分钟前 发表
val(x)
本站网友 腹壁整形
19分钟前 发表
n = 1 输出: []示例 :代码语言:javascript代码运行次数:0运行复制输入: head = [1
本站网友 豌豆的营养价值
26分钟前 发表
// 经典双指针算法 典型例题 // 可以通过 两个指针来在不知道链表长度的前提下 // 就可以确定需要删除的具体位置 Listode* removethFromEnd(Listode* head