周立功教授谈迭代器模式设计
terator_next(iterator_if_t *p_if, iterator_t *p_iter); // 迭代器后移函数,相当于++
14 void iterator_prev(iterator_if_t *p_if, iterator_t *p_iter); // 迭代器前移函数,相当于--这些函数的具体实现详见程序清单3.54。
程序清单3.54 迭代器接口的实现
1 #include "iterator.h"
2
3 void iterator_if_init(iterator_if_t *p_if, iterator_next_t pfn_next, iterator_prev_t pfn_prev)
4 {5 p_if -> pfn_next = pfn_next;
6 p_if -> pfn_prev = pfn_prev;
7 }
8
9 void iterator_next(iterator_if_t *p_if, iterator_t *p_iter)
10 {
11 p_if -> pfn_next(p_iter);
12 }
1314 void iterator_prev(iterator_if_t *p_if, iterator_t *p_iter)
15 {
16 p_if -> pfn_prev(p_iter);
17 }现在可以直接调用iterator_if_init()实现dlist_iterator_if_get(),详见程序清单 3.55。
程序清单 3.55 获取双向链表的迭代器接口(3)
1 void dlist_iterator_if_get(iterator_if_t *p_if)
2 {
3 iterator_if_init(p_if, __dlist_iterator_next, __dlist_iterator_prev);
4 }
- 电源软启动的实用设计技巧(07-16)
- 周立功:动态分布内存——malloc()函数与calloc()函数(07-22)
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功教你学程序设计技术:做好软件模块的分层设计,回调函数要这样写(07-30)
- 周立功教你学C语言编程:教你数组是如何保存指针的(07-31)
- 算法的泛化问题,这些坑你可能都经历过!|周立功教你学软件设计(08-01)