首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从单链表中删除节点

是指在一个单链表中删除指定节点的操作。单链表是一种常见的数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

删除节点的操作需要考虑以下几种情况:

  1. 删除头节点:如果要删除的节点是头节点,需要将头节点指针指向下一个节点即可。
  2. 删除中间节点:如果要删除的节点是中间节点,需要将前一个节点的指针指向下一个节点,跳过要删除的节点。
  3. 删除尾节点:如果要删除的节点是尾节点,需要找到尾节点的前一个节点,将其指针指向空即可。

下面是一个示例代码,演示如何从单链表中删除节点:

代码语言:txt
复制
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def deleteNode(head, val):
    # 处理头节点为要删除节点的情况
    if head.val == val:
        return head.next
    
    # 遍历链表查找要删除的节点
    curr = head
    while curr.next:
        if curr.next.val == val:
            curr.next = curr.next.next
            break
        curr = curr.next
    
    return head

# 创建一个示例链表:1 -> 2 -> 3 -> 4 -> 5
head = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
head.next = node2
node2.next = node3
node3.next = node4
node4.next = node5

# 删除节点值为3的节点
head = deleteNode(head, 3)

# 打印删除节点后的链表:1 -> 2 -> 4 -> 5
curr = head
while curr:
    print(curr.val)
    curr = curr.next

在云计算领域中,单链表的删除节点操作并不直接涉及云计算相关的概念和技术。因此,无法给出腾讯云相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

链表问题】删除链表的第K个节点

【题目描述】 在链表删除倒数第 K 个节点。...【要求】 如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1) 【难度】 士 【解答】 删除的时候会出现三种情况: 1、不存在倒数第 K 个节点,此时不用删除。...2、倒数第 K 个节点就是第一个节点。 3、倒数第 K 个节点在第一个节点之后。 所以我们可以用一个变量 num 记录链表一共有多少个节点。 如果 num < K,则属于第一种情况。...如果 num == K,则属于第二情况。 如果 num > K, 则属于第三种情况,此时删除倒数第 K 个节点等价于删除第 (num - k + 1) 个节点。...this.value = data; } } //删除第K个节点 public Node removeLastKthNode(Node head, int K) { if(head

1.7K10
  • 链表问题】删除链表的中间节点

    【题目描述】 给定链表的头节点head,实现删除链表的中间节点的函数。   ...例如:   步删除任何节点;   1->2,删除节点1;   1->2->3,删除节点2;   1->2->3->4,删除节点2;   1->2->3->4-5,删除节点3; 【要求】 如果链表的长度为...不过在做的时候,最好是先把一些特殊情况先处理好,例如删除的可能是第一个节点,也有可能不用删除节点(只有一个节点时就不用删除了。...slow.next = slow.next.next; return head; } 上次那道删除倒数第 K 个节点的题(【链表问题】删除链表的第K个节点) 其实也是可以使用双指针的...问题拓展 题目:删除链表 a / b 处的节点 【题目描述】   给定链表的头节点 head、整数 a 和 b,实现删除位于 a/b 处节点的函数。

    85740

    删除链表节点

    题目描述 难度级别:简单 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点。传入函数的唯一参数为 要被删除节点 。...现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释:给定你链表中值为 5 的第二个节点...提示: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。...解题思路 题目中待传递给当前函数的实参node,它是链表的某一个待删除节点,然后链表删除这个节点。...这里因为待传入的实参没有完整的链表,所以无法获取到之前节点,所以无法修改前一个节点的next指向。这时需要的是将要删除节点的值替换为它的下一个节点的值,之后要删除这个节点的next指向为下下一项。

    2.4K00

    237 删除链表节点

    01 题目信息 题目地址: https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 请编写一个函数,使其可以删除某个链表给定的(非末尾...传入函数的唯一参数为 要被删除节点 。 现有一个链表 -- head = [4,5,1,9],它可以表示为: ?...提示: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。...x) { val = x; } } 现在它传一条链表的一个节点删除这个节点。...这样就不用改变4节点的指向,只是把它指向的这个对象值与next都改掉,那么4还是指向0x001只不过是1了,而这个指向的又是0x004就是9,链表也就变成了4--->1--->9完成删除5的操作 public

    1.3K10

    删除链表的重复节点.

    前言 在一个排序的链表,存在重复的节点,如何删除链表重复的节点并返回删除后的链表头指针?例如:1->2->3->3->4->4->5,处理后为: 1->2->5。...常规思路 根据题意,我们可以知道链表的元素是排好序的。如果节点重复的话,当前节点一定与下一个节点相同。...其次,我们需要创建两个指针: 一个指向当前不重复的节点,我们将它命名为pre 一个为搜索指针,用于搜索链表与当前节点不重复的节点,我们将它命名为last 随后,我们为 pre 与 last 进行初始赋值...20220226224625702 实现代码 接下来,我们将上述思路转换为代码,如下所示: /** * 删除链表的重复节点 * @param pHead 链表节点 */ deleteDuplicatesNode...我们将文章开头所举的例子,代入上述思路,画一下它的递归栈帮助大家更好的理解,如下所示: image-20220228231355965 实现代码 接下来,我们将上述思路转换为代码,如下所示: /** * 删除链表的重复节点

    2.8K40

    2 删除链表节点

    复习链表的插入 链表的一个节点是由数据域和指针域构成,指针域的地址值为下个元素的地址。那么我们需要插入或者删除一个元素怎么处理呢? ? 先查看原始链表结构,准备将结点x插入链表。 ?...复习链表删除 上面简单介绍了带头结点的链表,在删除处理的时候同样适用,所以我们以后就直接采用带头结点的链表讲解。下面直接看看删除节点图。 ?...1 Leetcode237 删除链表节点 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点,你将只被给定要求被删除节点。...说明: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。 先思考一分钟哟! 效果更好哈!...嘿嘿,现在两个结点值1,不管删除哪一个我们都能获得结果,但是第二个节点1我们不方便删除,但是第三个结点1还是轻松的。假设为p指针指向删除节点,那么直接就是p.next=p.next.next。

    1.3K20

    Swift 删除链表节点 - LeetCode

    LeetCode 题目: 删除链表节点 请编写一个函数,使其可以删除某个链表给定的(非末尾)节点,你将只被给定要求被删除节点。...现有一个链表 -- head = 4,5,1,9,它可以表示为: 4 -> 5 -> 1 -> 9 示例1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释...: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9....示例2: 输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9...说明: 链表至少包含两个节点链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表的一个有效节点。 不要从你的函数返回任何结果。

    1.3K40
    领券