#include #include "list.h" typedef struct test { int val1; float val2; } test_t; void handle(void *data) { test_t *test = (test_t *) data; printf("val1:%d, val2:%f\n", test->val1, test->val2); } int compare_int(const void *s1, const void *s2) { test_t *data1 = (test_t *) s1; int *data2 = (int *) s2; return (data1->val1 - *data2); } int compare_int_sort(const void *s1, const void *s2) { test_t *data1 = (test_t *) s1; test_t *data2 = (test_t *) s2; return (data1->val1 - data2->val1); } void print(List *list) { printf("list len = %ld\n", list_get_lenth(list)); if (!list_is_empty(list)) { //test list_reverse list_traverse(list, handle); } else { printf("\tthe list is empty\n"); } } void Test_List() { List list; list_init(&list); test_t test1 = {10, 10.5}; test_t test2 = {20, 20.5}; test_t test3 = {30, 30.5}; test_t test4 = {40, 40.5}; test_t test5 = {50, 50.5}; //test list_insert printf("------insert(_at_tail)----\n"); list_insert(&list, &test1); list_insert(&list, &test2); list_insert(&list, &test3); print(&list); //test list_delete printf("------delete----\n"); list_delete(&list, &test1.val1, compare_int); print(&list); //test list_insert_at_head printf("------insert_at_head----\n"); list_insert_at_head(&list, &test4); print(&list); //test list_insert_at_index printf("------insert_at_index(2)----\n"); list_insert_at_index(&list, &test5, 2); print(&list); //test list_reverse printf("------reverse----\n"); list_reverse(&list); print(&list); //test list_search int key = 20; test_t *ret; printf("------search----\n"); ret = list_search(&list, &key, compare_int); printf("%d:%f\n", ret->val1, ret->val2); key = 50; ret = list_search(&list, &key, compare_int); printf("%d:%f\n", ret->val1, ret->val2); //test list_get_element printf("------list_get_element----\n"); ret = list_get_element(&list, 2); printf("%d:%f\n", ret->val1, ret->val2); ret = list_get_element(&list, 3); printf("%d:%f\n", ret->val1, ret->val2); //test list_sort printf("-----sort----\n"); list_sort(&list, compare_int_sort); print(&list); //test list_destroy printf("-----destroy----\n"); list_destroy(&list, NULL); return 0; }