单项链接的接口问题
// int类型数据
8 } slist_int_t;
9
10 int list_node_process(void *p_arg, slist_node_t *p_node)
11 {
12 printf("%d ", ((slist_int_t *)p_node)->data);
13 return 0;
14 }
15
16 int my_list_add(slist_head_t *p_head, int data) // 插入一个数据
17 {
18 slist_int_t *p_node = (slist_int_t *)malloc(sizeof(slist_int_t));
19 if (p_node == NULL) {
20 printf("The malloc memory failed!");
21 return -1;
22 }
23 p_node->data = data;
24 slist_add_head(p_head, &(p_node->node)); // 将结点加入链表中
25 return 0;
26 }
27
28 int my_list_del (slist_head_t *p_head, int data) // 删除一条数据
29 {
30 slist_node_t *p_node = slist_begin_get(p_head);
31 slist_node_t *p_end = slist_end_get(p_head);
32 while (p_node != p_end){
33 if (((slist_int_t *)p_node)->data == data){
34 printf("\n delete the data %d :", data);
35 slist_del(p_head, p_node); // 删除结点
36 free(p_node);
37 break;
38 }
39 p_node = slist_next_get(p_head, p_node);
40 }
41 slist_foreach(p_head, list_node_process, NULL); // 删除结点后,再打印出所有结点的数据信息
42 return 0;
43 }
44
45 int main(void)
46 {
47 slist_head_t *p_head = (slist_head_t *)malloc(sizeof(slist_head_t));
48 slist_init(p_head);
49
50 my_list_add(p_head, 1);
51 my_list_add(p_head, 2);
52 my_list_add(p_head, 3);
53 slist_foreach(p_head, list_node_process, NULL); // 打印出所有结点的数据信息
54 my_list_del(p_head, 1);
55 my_list_del(p_head, 2);
56
周立功 相关文章:
- 电源软启动的实用设计技巧(07-16)
- 周立功:动态分布内存——malloc()函数与calloc()函数(07-22)
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功教你学程序设计技术:做好软件模块的分层设计,回调函数要这样写(07-30)
- 周立功教你学C语言编程:教你数组是如何保存指针的(07-31)
- 算法的泛化问题,这些坑你可能都经历过!|周立功教你学软件设计(08-01)