这是 TED 一期,对大神 Linus 的访谈;

Node *head, *prev, *walk;
void remove_list_entry(Node* entry)
{prev = NULL;// walk 这一变量名,十分巧妙,// 变量命名的不二法门就是对应其物理(实际)意义walk = head;while (walk != entry){prev = walk;walk = walk->next;}// 也即没有执行 while 循环,walk == entry,entry == headif (!prev)head = entry->next;elseprev->next = entry->next;}

为什么要区分是头指针呢,因为整个程序的逻辑是找到被删除指针的前一个指针,如果被删除的指针为头指针,显然其没有前一个指针。

显然这种的代码不具很好的 taste,话说 Jobs 也很爱讲 taste(Windows 最大的特点就是 has no taste)。

void remove_list_entry(Node* entry)
{Node **indirect;indirect = &head;while ((*indirect) != entry)indirect = &(*indirect)->next;*indirect = entry->next;
}

这两段代码的显著区别就是第二段代码省略了 if 语句,对头指针和前一个指针做了统一化处理。

头指针没有前一个指针,但有自己的地址,自己的地址自然还是指向自己。

Tricks(三十六)—— remove_list_entry(无需 if 逻辑)相关推荐

  1. 推荐系统三十六式——学习笔记(三)

    由于工作需要,开始学习推荐算法,参考[极客时间]->[刑无刀大牛]的[推荐系统三十六式],学习并整理. 3 原理篇之紧邻推荐 3.1 协同过滤 要说提到推荐系统中,什么算法最名满天下,我想一定是 ...

  2. [Python从零到壹] 三十六.图像处理基础篇之图像算术与逻辑运算详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. 第三十六章 SQL函数 CURRENT_TIME

    文章目录 第三十六章 SQL函数 CURRENT_TIME 大纲 参数 描述 小数秒精度 示例 第三十六章 SQL函数 CURRENT_TIME 返回当前本地时间的日期/时间函数. 大纲 CURREN ...

  4. Python编程基础:第三十六节 模块Modules

    第三十六节 模块Modules 前言 实践 前言 我们目前所有的代码都写在一个文档里面.如果你的项目比较大,那么把所有功能写在一个文件里就非常不便于后期维护.为了提高我们代码的可读性,降低后期维护的成 ...

  5. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  6. NeHe OpenGL教程 第三十六课:从渲染到纹理

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. 三十六、Java集合中的HashMap

    @Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  8. 三十六、rsync通过服务同步、Linux系统日志、screen工具

    三十六.rsync通过服务同步.Linux系统日志.screen工具 一.rsync通过服务同步 该方式可以理解为:在远程主机上建立一个rsync的服务器,在服务器上配置好各种应用,然后本机将作为客户 ...

  9. 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十六章 UCOSII 实验 1任务调度...

    1)实验平台:alientek NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三十六章 ...

  10. 第三百三十六章 斗宗强者间的大战!

    第三百三十六章 斗宗强者间的大战! <script language="javascript" src="/js/style2.js"></s ...

最新文章

  1. 【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )
  2. 用存储过程生成记录编号
  3. [译]用AngularJS构建大型ASP.NET单页应用(二)
  4. 用条件运算符编写java程序,使用条件运算符的奇怪java行为。这是一个错误吗?...
  5. 关系型数据库的分片原则
  6. Azure Site Recovery之启用复制
  7. request一些常用方法
  8. java数组变量_关于java 的数组引用变量
  9. 郊寒岛瘦 —— 太平洋的小岛
  10. 一个声明被new多次
  11. 解读《美国国家BIM标准》 – BIM能力成熟度模型 (七)
  12. 多源信息融合研究综述
  13. 32年正大天晴肝疾攻坚路 半部中国乙肝抗争史
  14. 加入共享宽带,让你的闲置宽带循环利用再变现
  15. 怎样用css3设计出向上向下的小箭头
  16. 云豹短视频app源码中,标签选择功能的实现
  17. xmlhttp方法抓取下一页问题
  18. 2021年热门的10个IT技术职位以及如何招聘
  19. Python学习笔记(一)1.Python中end=和sep=的用法与区别。
  20. 海思Hi3516EV300调试笔记

热门文章

  1. java: Internal error in the mapping processor: java.lang.NullPointerException问题解决
  2. Keras——Keras简介、安装、backend
  3. Pytorch——回归问题
  4. Ubuntu16.04安装boost库
  5. 关于排序算法思想总结,你该了解这些
  6. 非平衡电桥电阻计算_双臂电桥(QJ44)的功能介绍与使用
  7. mysql中的sql
  8. LeetCode Rearrange String k Distance Apart
  9. Always On 集群监听创建失败问题
  10. Matlab随笔之三维图形绘制