栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

请问给你链表要删除的节点x,但是不给你头节点head,你能将x删除吗

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

请问给你链表要删除的节点x,但是不给你头节点head,你能将x删除吗

请问给你链表要删除的节点x,但是不给你头节点head,你能将x删除吗?

提示:本题考的就是你对内存的理解


文章目录
  • 请问给你链表要删除的节点x,但是不给你头节点head,你能将x删除吗?
    • @[TOC](文章目录)
  • 题目
  • 一、审题
  • 二、解题
    • 单链表不能
  • 双链表可以
  • 总结
题目

请问给你链表要删除的节点x,但是不给你头节点head,你能将x删除吗?


一、审题

示例:1-2-3-4-5
x=3
你能删除x吗?


二、解题

java中的内存知识,既然问你这个题目,就是为了解java的内存与否?

单链表不能

如果你是单链表,没有head,由于单链表只有next指针,你告诉我x要删除,我是无法找到x的上一个点的
因为要删除x,需要x的上一个点k=x的下一个点,跳指删除!

正常情况下,有head,这样删除:

然后此时,3单独指向null,JVM就会自动删除它

但是,如果没有head,你要删除x=3的话,你可以这么干:令x=null,但是后面的4-5就断了,这没删除成功啊!!

又或者没有head,你要删除x=5
在java中链表其实是这么存的

java 中null是特定的地址,你要删除x=5,没有head,直接令5指向null,等于没干,对原来那个链表不产生任何的影响!!!
这就是java内存的机制,你知道,就明白了
没有head,是无法找到x的上一个点,完成删除任务的。

双链表可以

既然要找x上一个点,如果有last指针,那就好办了哇!


总结

提示:重要经验:

1)单链表的内存机制,要了解,如果不给head,由于单链表只有1个next指针,无法访问上一个点,故不能删除
2)双链表有双指针last和next,可以索引上一个点,故,直接给x就能删除!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号