由一道数据结构题目想到的
来源:互联网 发布:勇往直前网络歌手歌词 编辑:程序博客网 时间:2024/05/22 00:38
这题目是:已知指向单链表中段某结点的指针p,在不遍历链表的前提下删除当前结点。
我们都知道,对于单链表这样的存在,必须在知道前驱地址的前提下才好删去当前结点。这就要求从头遍历链表,找到next指向当前结点的结点,然后让它的next跨过当前节点即可。
但是不让遍历怎么办呢?在看了答案之后,我的情绪遭遇了一次小小的震荡。我把注意力收缩在封装了数据和指针的结点结构上——这已经是多年的思维定势。但是答案告诉我,不是要删除当前结点么,不是不能遍历么?那好,我把下一个结点的数据域的值拷贝给当前结点,然后把下一个结点删掉即可。。。删掉即可。。。即可。。。可:
p.data = p.next.data;p.next = p.next.next;
两行代码解决战斗。好吧,我被玩儿了。也许有人要跟我一样从心底呐喊:投机!投机又怎样?我们的目的是解决问题不是装逼。
删结点也不是杀人,你要杀A,结果找不到A,于是把B的户口改成A然后杀掉——这是荒唐的。但是对于程序来说,这个思维是有效的。
而且本质的来看,这个处理完全符合单链表删除结点算法的规律:找到前驱,让它跟后继结点对接,扔掉当前结点完事儿。同时,删除节点这个问题的本质还是删除其中的数据,而非一定要收回被占据的某特定地址的存储空间。
感谢这个问题,至少以后我会警醒自己不要把思路收得太狭窄。
- 由一道数据结构题目想到的
- 由一道面试题目想到的
- 由一道题目想到的C++编译器优化问题
- 一道题目想到的
- 由一道试题想到的
- 由一道面试题想到的
- 由中兴一道笔试题想到的
- 由一道高考题而想到的
- 由一道牛客题目想到系统调用和库函数
- 由朗讯的一道笔试题想到的!
- 由朗讯的一道笔试题想到的
- 由朗讯的一道笔试题想到的!
- 由搜狐的一道笔试题想到的
- 由一道概率论习题想到的——
- 由一道题目引出的java多态
- 由一个简单的js题目想到的问题。。。。
- 一道关于时间复杂度的数据结构题目
- 分享一道微软的数据结构面试题目
- ARC 和非 ARC 的混合模式
- j2ee cookie 实现自动登录
- 本地DNS的更新方法
- 用SQL获得表索引
- 地址搜集
- 由一道数据结构题目想到的
- VC 显示当前运行的所有进程
- Android PendingIntent
- 自己实现的Vector类 这是Vector.h文件
- MySQL执行计划解读
- Qwt源码解读之QwtPointPolar类
- Oracle sqlldr
- Discuz X2.5 漏洞修复失败,发现您的目录及文件无修改权限
- jQuery取得select选择的文本与值