微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单项链接的接口问题

单项链接的接口问题

时间:08-26 来源:周立功单片机 点击:

       return 0;

8         }

9         return -1;

10  }

为便于查阅,如程序清单3.29所示展示了slist.h文件的内容。

程序清单3.29  slist.h文件内容

1    #pragma once

2

3    typedef struct _slist_node {

4         struct _slist_node  *p_next;                                   // 指向下一个结点的指针

5    } slist_node_t;

6

7    typedef  slist_node_t      slist_head_t;                                      // 头结点类型定义

8    typedef int (*slist_node_process_t) (void *p_arg, slist_node_t *p_node); // 遍历链表的回调函数类型

10  int slist_init (slist_head_t *p_head);                                            // 链表初始化

12  int slist_add (slist_head_t *p_head, slist_node_t *p_pos, slist_node_t *p_node);  // 添加一个结点

13  int slist_add_tail (slist_head_t *p_head, slist_node_t *p_node);               // 添加一个结点至链表尾部

14  int slist_add_head (slist_head_t *p_head, slist_node_t *p_node);          // 添加一个结点至链表头部 

15  int slist_del (slist_head_t *p_head, slist_node_t *p_node);                // 删除一个结点 

16

17  slist_node_t *slist_prev_get (slist_head_t *p_head, slist_node_t *p_pos);  // 寻找某一结点的前一结点

18  slist_node_t *slist_next_get (slist_head_t *p_head, slist_node_t *p_pos);  // 寻找某一结点的后一结点

19  slist_node_t *slist_tail_get (slist_head_t *p_head);                       // 获取尾结点

20  slist_node_t *slist_begin_get (slist_head_t *p_head);  // 获取开始位置,第一个用户结点

21  slist_node_t *slist_end_get (slist_head_t *p_head);          // 获取结束位置,尾结点下一个结点的位置

22 

23  int slist_foreach(slist_head_t        *p_head,                        // 遍历链表

24                 slist_node_process_t  pfn_node_process,

25               void               *p_arg); 

综合范例程序详见程序清单3.30。

程序清单3.30  综合范例程序

1    #include

2    #include "slist.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top