以前在大学的时候学链表的时候, 链表规定放的就是int。 那时候自己有觉悟,会定义宏来处理一些基本的数据,虽然还不能适应所有的数据结构。 事实上, 这样通用性还是很差, 我们是不可能知道链表的数据里存放了什么。只有使用链表的应用才知道,而且输出格式如何,还是应用来选择。 目前普遍的做法是,提供一个接口遍历链表,在遍历循环里调用传进来的回调函数,将链表数据提供给回调函数。
示例:
示例:
- //定义回调函数原型
- typdef void (*PrintCallBack) (List* node, void* user_data);
- void list_print (List* list, PrintCallBack cb, void* user_data)
- {
- if (!list) return;
- List* node = list_first (list);
- while (node)
- {
- //将链表数据和用户数据传给回调函数,用户数据的作用是让应用传递一些额外的数据
- cb (node, user_data);
- node = node->next;
- }
- }
- //回调函数实例
- void print_int (List* node, void* user_data)
- {
- printf ("%d/n", node->data);
- }