在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前两节,我们已经完成了链表的一些操作,快来测试一下吧。 这里使用的单元测试工具名字叫“check”。 START_TEST(my_slist_1) { struct student students[8] = {{"WangDong",18},{"LiuMing",19},{"SunYazhou",21},{"ChenYu",27},{"LiuXuewei",28},\ {"ZhangGuorong",47},{"LiuDehua",53},{"WangGuozhen",48}}; struct slist_info list; slist_init(&list); int i = 0; for(;i<sizeof(students)/sizeof(students[0]);++i) list.insert_head(students+i,&list); list.for_each(&list,print_student); 我们先定义了一个数组,里面存放了姓名,年龄。接下来定义一个链表,并初始化。然后调用插入方法,依次插入。遍历一下,打印出来: void print_student(void *data) { struct student *p = data; printf("Name: %15s Age:%d\n",p->name,p->age); } 用到了这个回调函数。看看打印的结果: Name: WangGuozhen Age:48 Name: LiuDehua Age:53 Name: ZhangGuorong Age:47 Name: LiuXuewei Age:28 Name: ChenYu Age:27 Name: SunYazhou Age:21 Name: LiuMing Age:19 Name: WangDong Age:18 struct node_info *p = list.find(&list,compare_student,&students[3]); list.del(p,&list); list.for_each(&list,print_student); 我们寻找某个节点(ChenYu),然后删除。 比较的回调函数是: int compare_student(void *dest,void *src) { struct student *p1 = dest; struct student *p2 = src; if(strcmp(p1->name,p2->name)==0) return 1; else return 0; } 结果如图: Name: WangGuozhen Age:48 Name: LiuDehua Age:53 Name: ZhangGuorong Age:47 Name: LiuXuewei Age:28 Name: SunYazhou Age:21 Name: LiuMing Age:19 Name: WangDong Age:18 再测试一下反转: list.invert(&list); list.for_each_safe(&list,print_student); } END_TEST 结果是: Name: WangDong Age:18 Name: LiuMing Age:19 Name: SunYazhou Age:21 Name: LiuXuewei Age:28 Name: ZhangGuorong Age:47 Name: LiuDehua Age:53 Name: WangGuozhen Age:48 测试成功! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论