博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表删除节点
阅读量:4128 次
发布时间:2019-05-25

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

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。

思路:删除某个结点需要找到该结点的前一个结点,由于单向链表没有指向前一个结点的指针,所以不得不从头指针开始遍历链表。显然时间复杂度为O(n)。

如何删除一个节点

(1)待删除的节点不是尾节点的情况:首先把待删除的节点的前一个节点的pre指针指向待删除的节点的后一个节点的首地址(这样就把这个节点从链表中摘出来了),然后再将这个摘出来的节点free掉即可。

(2)待删除的节点是尾节点的情况:首先把待删除的尾节点的前一个节点的pre指针指向NULL(这时候就相当于原来尾节点前面的一个节点变成了新的尾节点),然后将摘出来的节点free掉。

var deleteNode = function(head, val) {    let pre = new ListNode(0);  // 考虑要删除的就是链表头    pre.next = head;     let node = pre;  // 找到被删除结点的前一个结点    while (node.next) {        if (node.next.val === val) {              node.next = node.next.next;            break;        }        node = node.next;    }    return pre.next;};

 

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

你可能感兴趣的文章
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>