博客
关于我
程序员面试金典:面试题 02.03. 删除中间节点
阅读量:373 次
发布时间:2019-03-05

本文共 538 字,大约阅读时间需要 1 分钟。

1. 题目

删除单向链表中间节点

2. 描述

实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。

示例

输入:单向链表 a->b->c->d->e->f 中的节点 c结果:该链表变为 a->b->d->e->f

3. 思路

直接删除当前结点,实际上操作的是下一个结点。我们将当前结点的值赋值给下一个结点的值,然后将当前结点的下一个结点指向下一个结点的下一个结点。

4. 实现

public void deleteNode(ListNode node) {    // 将当前节点的值赋值给下一个节点的值    node.val = node.next.val;    // 将当前节点的下一个节点指向下一个节点的下一个节点    node.next = node.next.next;}

5. 代码解释

  • 赋值操作node.val = node.next.val 将当前节点的值赋值给下一个节点的值,这样可以确保数据不丢失。
  • 指针调整node.next = node.next.next 将当前节点的下一个节点指向下一个节点的下一个节点,这样可以直接删除当前节点。
  • 这是一个简单高效的方法,能够在O(1)时间复杂度内完成删除操作。

    转载地址:http://rnjwz.baihongyu.com/

    你可能感兴趣的文章
    DSP开发板准备
    查看>>
    测试基本
    查看>>
    5.redo undo
    查看>>
    编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
    查看>>
    《JVM的内存》
    查看>>
    c++中istringstream及ostringstream超详细说明
    查看>>
    c++中ifstream及ofstream超详细说明
    查看>>
    c++中endl操作符以及它的兄弟们
    查看>>
    c++中explicit和mutable关键字探究
    查看>>
    c语言结构体字节对齐详解
    查看>>
    linux c/c++面试知识点整理(八)
    查看>>
    epoll的基本使用
    查看>>
    linux网络编程系列(十二)--滑动窗口、拥塞控制、断线重连机制
    查看>>
    c++11&14-编译
    查看>>
    Deep residual learning for image recognition
    查看>>
    IO控制方式
    查看>>
    IO控制器
    查看>>
    Java 异常
    查看>>
    BP神经网络学习--MATLAB源码详细注释
    查看>>
    LeetCode122.买卖股票的最佳时机2Golang版
    查看>>