• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 用O1时间循环删除链表?

用O1时间循环删除链表?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了o1-苏州瑞友钢铁,o1签证材料,美国o1签证,o1,联想o1游戏等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:用O1时间循环删除链表?
描述:

在一本数据结构书上看到了这个问题,是个思考题,没有给答案。网上找了找,似乎也没有。有没有大神提供个思路?


解决方案1:

之前用过类似的数据结构,没必要写什么内存分配函数。主要实现思路如下:

  1. 一开始就申请连续的N块内存。每块内存内容为该块内存是否使用的标记和链表节点数据。
  2. 添加节点时在连续的内存中找一块未使用的内存块,标记为使用。
  3. 释放节点时该块内存标记为未使用。
  4. 删除链表时释放掉连续的N块内存即可。
  5. 其他如申请的连续内存用完之类的问题基本有解决方法。

但是这样的做的主要问题是:如果节点是包含资源的,那么资源必然会泄露。

解决方案2:

我同意上面brayden的说法,这个问题在数据结构与算法上没有任何意义,应该是楼主看错题了。问题是O(1)时间删除循环单链表的某个节点才对,下面简单给出O(1)时间删除循环单链表的某个节点的解法:
假定要删除的节点是ListNode *toBeDeleted
要求在O(1)时间内删除,就肯定不能用遍历了,由于是单项链表,不用遍历是找不到该节点的前一个节点的,所以就不能用常规链表删除的方法了。
由于我们知道要被删除的节点ListNode *toBeDeleted,所以我们可以直接得到它的后一个节点ListNode *pNext。我们可以用pNext的内容覆盖掉toBeDeleted节点,然后将节点toBeDeleted链接到pNext的下一个节点之后将pNext节点删除即可。下面是一个简单的示意图(假设要删除i):
都市1时间,湖南都市1时间重播,时间暂时停止 1,我的时间1.7.2,1公里步行多长时间,1学时是多长时间,1时间,1课时是多长时间,16号线首末车时间,北京时间1,仙履奇缘3时间魔法1,cctv1撒贝宁时间,时间之谜1,步行1公里多少时间,我的时间1.7.10光

原理很简单就是:完全克隆下一个节点,然后在删除下一个节点,以达到删除本节点的假象。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用O1时间循环删除链表?

相关文章

  • 2017-06-07 python爬虫Python超大listdir的问题。
  • 2017-06-07 (flask)在做重定向时url没有改变。响应结果200
  • 2017-06-07 指针的指针Golang继承指针与非指针的一个疑问
  • 2017-06-07 各种工作流的工作量对比。用工作流做过项目的请进。有任何有效回答不少于10分,分不够另开贴
  • 2017-06-07 (python)Django国际化虽然页面语言已切换中文但是无效
  • 2017-06-07 ipv6是什么七牛怎么配置才能支持IPv6
  • 2017-06-07 Python写爬虫,得到了图片链接,怎样写入文件?
  • 2017-06-07 Python用forlineinreadfile,'rb':处理超大文件时,想用多线程,该如何分配合适的文件偏移?
  • 2017-06-07 又来请教正则表达式汗
  • 2017-06-07 求php正则匹配table标签

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • python导入的一个问题
    • (python)xxforxinrange1,11ifx%2==0这个式子运算顺序是怎样的?
    • 如何在Python中删除字串,并按行输出删除之后的文本?
    • 大神们帮我看看我用python写的决策树类··一直不对
    • phpmysql数据库存储html代码,输出到浏览器时怎样正确解析,用的是啦laravel框架
    • (shell)我写了个批量新建用户的linux脚本,总出错,谁帮我看一下吧
    • (ruby)新浪微博如何保护用户session
    • API接口采用HTTPS后,此时API返回的JSON是经过HTTPS加密了的吗?
    • Python2中如何实现“解压可迭代对象赋值给多个变量”?
    • 新浪微博实名认证七牛企业实名认证有什么用处

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有