随手笔记(七)———如何写好链表代码
如何写好链表代码?
1. 理解指针或引用的含义
什么是指针?指针是一个变量,该变量中存的是其它变量的地址。将普通变量赋值给指针变量,其实是把它的地址赋值给指针变量。
2. 警惕指针丢失和内存泄漏
在插入和删除结点时,要注意先持有后面的结点再操作,否者一旦后面结点的前继指针被断开,就无法再访问,导致内存泄漏。
3. 利用哨兵简化难度
链表的插入、删除操作,需要对插入第一个结点和删除最后一个节点做特殊处理。利用哨兵对象可以不用边界判断,链表的哨兵对象是只存指针不存数据的头结点。
4. 重点留意边界条件处理
操作链表时要考虑链表为空、一个结点、两个结点、头结点、尾结点的情况。学习数据结构和算法主要是掌握一系列思想,能在其它的编码中也养成考虑边界的习惯。
5. 举例画图,辅助思考
对于比较复杂的操作,可以用纸笔画一画,释放脑容量来做逻辑处理(时间换空间思想),也便于完成后的检查。
6. 多写多练,没有捷径
孰能生巧,不管是什么算法,只有经过反复的练习,才能信手拈来。
哨兵对象思想,在 iOS AutoreleasePool 中有用到,在 AutoreleasePoolPush 时添加一个哨兵对象,Pop 时将到哨兵对象之间的所有 Autorelease 对象发送 release 消息。
随手笔记(七)———如何写好链表代码相关推荐
- 配置多个git账号_docker随手笔记第七节 jenkins通过git部署java微服务插件安装
docker随手笔记第一节 docker概念及安装 docker随手笔记第二节 docker常用命令解析 docker随手笔记第三节 docker构建java镜像 docker随手笔记第四节 dock ...
- 07 | 链表(下):如何轻松写出正确的链表代码?
目录 技巧一:理解指针或者引用的含义 技巧二:警惕指针丢失和内存泄漏 技巧三:利用哨兵简化实现难度 技巧四:重点留意边界条件处理 技巧五:举例画图,辅助思考 技巧六:多写多练,没有捷径 链表的概念回顾 ...
- 写出漂亮代码的七种方法
首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术.逻辑等.以下为写出漂亮代码的七种方法: 1.尽快结束 if 语句 例如下面这个JavaScript语句,看起来就很恐怖: functi ...
- 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码
吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...
- php怎么自己写框架,PHP学习笔记,自己动手写个MVC的框架
最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...
- 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9344721 作者:七十一雾央 新浪微博:http:// ...
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- window的dos命令学习笔记 七
文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...
- STM32学习笔记(七)---SysTick
STM32学习笔记(七)-SysTick 文章目录 STM32学习笔记(七)---SysTick 一.SysTick简介 二.SysTick功能框图 三.SysTick寄存器 四.SYSTICK使用 ...
最新文章
- 多个PHP版本环境搭建(nginx,php)
- 基于cookie的SSO单点登录系统
- poj-1064Cable master(二分)
- Wordpress插件检测机制原理
- .xyz域名注册总量TOP10服务商:中国占据4个席位
- 安装配置OSA运维管理平台
- JAVA实现美团电影价格抓取(附代码)
- ROS安装过程和配置过程(可能出现的问题及解决方法)
- Json转换利器Gson-Gson注解和GsonBuilder
- mysql命令面板数据更改_宝塔面板数据库自动停止解决办法,宝塔面板MySQL数据库自动重启shell脚本...
- 综述!信息检索中的花式预训练
- Android提高显示布局文件的性能,使用include标签重用layouts
- 《平潭史话》之平潭轮渡
- Django搭建个人博客之编写博客文章的Model模型
- 超级电容模组电压不均衡特性分析
- 控制器中接收数据的四种方式
- Word文件打开之后有只读限制
- 2022081班李亚楠20220920
- 《GTD I》读书笔记
- springboot整合liquibase(补充)
热门文章
- 电流传感器(霍尔元件)使用教程——以ACS712ELCTR为例
- 【无人机】给梦想插上创新的翅膀 —探访中国无人机领域的部分开拓者
- 暾盛机器人_智能化引领发展 品牌化彰显特色——2018台州黄岩(国际)模塑产业博览会侧记...
- 【2022-01-10】树莓派配置花生壳
- AOSP仓库分支截止2022年1月
- 鄂尔多斯市固体废物物联网硬件设施安装规范
- Blender骨骼绑定:Auto-Rig Pro 使用图解
- 刘亦菲生日当天,引发了我对正则的思考
- [BZOJ1150][CTSC2007]数据备份Backup
- 基于asp.net汽修系统仓库管理系统#毕业设计#课程设计