如何写好链表代码?

1. 理解指针或引用的含义
什么是指针?指针是一个变量,该变量中存的是其它变量的地址。将普通变量赋值给指针变量,其实是把它的地址赋值给指针变量。

2. 警惕指针丢失和内存泄漏
在插入和删除结点时,要注意先持有后面的结点再操作,否者一旦后面结点的前继指针被断开,就无法再访问,导致内存泄漏。

3. 利用哨兵简化难度
链表的插入、删除操作,需要对插入第一个结点和删除最后一个节点做特殊处理。利用哨兵对象可以不用边界判断,链表的哨兵对象是只存指针不存数据的头结点。

4. 重点留意边界条件处理
操作链表时要考虑链表为空、一个结点、两个结点、头结点、尾结点的情况。学习数据结构和算法主要是掌握一系列思想,能在其它的编码中也养成考虑边界的习惯。

5. 举例画图,辅助思考
对于比较复杂的操作,可以用纸笔画一画,释放脑容量来做逻辑处理(时间换空间思想),也便于完成后的检查。

6. 多写多练,没有捷径
孰能生巧,不管是什么算法,只有经过反复的练习,才能信手拈来。

哨兵对象思想,在 iOS AutoreleasePool 中有用到,在 AutoreleasePoolPush 时添加一个哨兵对象,Pop 时将到哨兵对象之间的所有 Autorelease 对象发送 release 消息。

随手笔记(七)———如何写好链表代码相关推荐

  1. 配置多个git账号_docker随手笔记第七节 jenkins通过git部署java微服务插件安装

    docker随手笔记第一节 docker概念及安装 docker随手笔记第二节 docker常用命令解析 docker随手笔记第三节 docker构建java镜像 docker随手笔记第四节 dock ...

  2. 07 | 链表(下):如何轻松写出正确的链表代码?

    目录 技巧一:理解指针或者引用的含义 技巧二:警惕指针丢失和内存泄漏 技巧三:利用哨兵简化实现难度 技巧四:重点留意边界条件处理 技巧五:举例画图,辅助思考 技巧六:多写多练,没有捷径 链表的概念回顾 ...

  3. 写出漂亮代码的七种方法

    首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术.逻辑等.以下为写出漂亮代码的七种方法: 1.尽快结束 if 语句 例如下面这个JavaScript语句,看起来就很恐怖:  functi ...

  4. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  5. php怎么自己写框架,PHP学习笔记,自己动手写个MVC的框架

    最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...

  6. 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9344721 作者:七十一雾央 新浪微博:http:// ...

  7. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练

    [K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...

  8. window的dos命令学习笔记 七

    文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...

  9. STM32学习笔记(七)---SysTick

    STM32学习笔记(七)-SysTick 文章目录 STM32学习笔记(七)---SysTick 一.SysTick简介 二.SysTick功能框图 三.SysTick寄存器 四.SYSTICK使用 ...

最新文章

  1. 多个PHP版本环境搭建(nginx,php)
  2. 基于cookie的SSO单点登录系统
  3. poj-1064Cable master(二分)
  4. Wordpress插件检测机制原理
  5. .xyz域名注册总量TOP10服务商:中国占据4个席位
  6. 安装配置OSA运维管理平台
  7. JAVA实现美团电影价格抓取(附代码)
  8. ROS安装过程和配置过程(可能出现的问题及解决方法)
  9. Json转换利器Gson-Gson注解和GsonBuilder
  10. mysql命令面板数据更改_宝塔面板数据库自动停止解决办法,宝塔面板MySQL数据库自动重启shell脚本...
  11. 综述!信息检索中的花式预训练
  12. Android提高显示布局文件的性能,使用include标签重用layouts
  13. 《平潭史话》之平潭轮渡
  14. Django搭建个人博客之编写博客文章的Model模型
  15. 超级电容模组电压不均衡特性分析
  16. 控制器中接收数据的四种方式
  17. Word文件打开之后有只读限制
  18. 2022081班李亚楠20220920
  19. 《GTD I》读书笔记
  20. springboot整合liquibase(补充)

热门文章

  1. 电流传感器(霍尔元件)使用教程——以ACS712ELCTR为例
  2. 【无人机】给梦想插上创新的翅膀 —探访中国无人机领域的部分开拓者
  3. 暾盛机器人_智能化引领发展 品牌化彰显特色——2018台州黄岩(国际)模塑产业博览会侧记...
  4. 【2022-01-10】树莓派配置花生壳
  5. AOSP仓库分支截止2022年1月
  6. 鄂尔多斯市固体废物物联网硬件设施安装规范
  7. Blender骨骼绑定:Auto-Rig Pro 使用图解
  8. 刘亦菲生日当天,引发了我对正则的思考
  9. [BZOJ1150][CTSC2007]数据备份Backup
  10. 基于asp.net汽修系统仓库管理系统#毕业设计#课程设计