首页 > 其他分享 >删除链表的倒数第 N 个结点

删除链表的倒数第 N 个结点

时间:2024-01-17 16:47:30浏览次数:22  
标签:结点 ListNode struct int head next 链表 倒数第

 

 

/*
 * @lc app=leetcode.cn id=19 lang=c
 *
 * [19] 删除链表的倒数第 N 个结点
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *removeNthFromEnd(struct ListNode *head, int n)
{
    struct ListNode head_;
    head_.next = head;
    struct ListNode *p = &head_;
    struct ListNode *q = &head_;

    // p -> n
    for (int i = 0; i < n; i++)
    {
        if (p == NULL)
            return head;
        p = p->next;
    }

    // q-> head   p-> 正数n
    while (p->next != NULL)
    {
        q = q->next;
        p = p->next;
    }
    // delete q->next

    struct ListNode *del = q->next;
    q->next = q->next->next;

    free(del);

    return head_.next;
}
// @lc code=end

 

标签:结点,ListNode,struct,int,head,next,链表,倒数第
From: https://www.cnblogs.com/angdh/p/17970376

相关文章

  • leetcode 21.合并两个有序链表
    leetcode21.合并两个有序链表第二十一题:合并两个有序链表1.迭代:当l1和l2都不是空链表时,判断l1和l2哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。publicListNodemergeTwoLists(ListNodelist1,......
  • 遍历链表,将节点接到末端 【1月16日学习笔记】
    点击查看代码//遍历链表,将节点接到末端#include<iostream>usingnamespacestd;structnode{ intdata;//数据 node*next;//尾巴};//定义节点结构体node*A;//头指针固定,globalvariabl......
  • 双向链表C语言实现
    双向链表实现(带头结点版)双向链表的实现与单链表类似,在这里使用C语言实现,主要包括头插法插入节点,删除节点以及创建空链表抽象数据结构ADT定义双向链表与单链表的区别在于多了一个指向上一个节点的指针prevtypedefstruct_Node{intdata;struct_Node*next;......
  • 【算法】【线性表】【链表】随机链表的复制
    1 题目给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random......
  • 【算法】【线性表】【链表】环形链表
    1 题目给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递 。仅......
  • leetcode 19.删除链表的倒数第N个节点
    leetcode19.删除链表的倒数第N个节点第十九题:删除链表的倒数第N个节点在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummynode),它的next指针指向链表的头节点。这样一来,我们就不需要对头节点进行特殊的判断了。例如,在本题中,如果我们要删除节点y,我们需要知道节点y的前......
  • 每日一题 2024-1-15 删除排序链表中的重复元素Ⅱ
    1.题目(中等)原题链接给定一个已排序的链表的头\(head\),删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。示例1:输入:head=[1,2,3,3,4,4,5]输出:[1,2,5]示例2:输入:head=[1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围\([0,300]\)......
  • 【算法】【线性表】【链表】K 个一组翻转链表
    1 题目给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例1:......
  • 经典数据结构题目-链表
    链表707.设计链表解题思路参考官方的单向链表,设置一个成员变量作为虚拟头节点,一个成员变量size保存有效节点数代码publicMyLinkedList(){size=0;head=newListNode(0);}publicintget(intindex){if(index<0||index>=size){retur......
  • 数据结构-------单链表
    单链表:在计算机科学中,链表是数据元素的线性组合,元素储存上并不连续。可以分为:单向链表、双向链表、循环链表 单向链表:首先,定义结点的类型,它包括值和下一个结点 相关java代码:1privateNodehead;//定义头部结点2publicclassNode{3privateint......