系统程序员成长计划 学习笔记(2) -- Write Less

本文通过实例讲解如何利用回调函数(PrintFunc 和 VisitFunc)优化单链表的遍历和操作,如打印链表元素、寻找最大值和累加节点值。回调函数的应用减少了代码重复,提高了代码复用性。
摘要由CSDN通过智能技术生成

很简单的需求, 单链表中可能存放整数, 字符串, 浮点, 双精度等等数据类型, 写出遍历函数,

 

当然不可能每种类型写一个函数, 这样的代码太丑陋, 因为大量的代码都是重复的, 这个时候就用到回调的方法,

 

声明函数指针

 

 

实现外层函数

 

  

 

一个printer的例子,

 

  

调用

 

  

 

这又就节省了大量的遍历链表产生的重复代码;

 

 

另一个例子是找出单链表里的最大值和累加单链表各个的节点值, 这两个算法肯定是相似度很高的. 一般人其实第一直觉意识不到这一点, 所以会写两个函数, 写完了发现, 大部分的操作(遍历)是重复的, 如何做呢,

 

类似, 采用回调函数, 但是这里涉及到了回调函数保存中间数据的问题, (当前最大值, 和partial result of sum)

 

于是

 

首先声明

 

  

ir就是用来保存中间数据的,

 

实现上层函数

 

 

 

回调函数的例子:

 

  

这里ctx就是保存的中间结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值