很简单的需求, 单链表中可能存放整数, 字符串, 浮点, 双精度等等数据类型, 写出遍历函数,
当然不可能每种类型写一个函数, 这样的代码太丑陋, 因为大量的代码都是重复的, 这个时候就用到回调的方法,
声明函数指针
实现外层函数
一个printer的例子,
调用
这又就节省了大量的遍历链表产生的重复代码;
另一个例子是找出单链表里的最大值和累加单链表各个的节点值, 这两个算法肯定是相似度很高的. 一般人其实第一直觉意识不到这一点, 所以会写两个函数, 写完了发现, 大部分的操作(遍历)是重复的, 如何做呢,
类似, 采用回调函数, 但是这里涉及到了回调函数保存中间数据的问题, (当前最大值, 和partial result of sum)
于是
首先声明
ir就是用来保存中间数据的,
实现上层函数
回调函数的例子:
这里ctx就是保存的中间结果