103 lines
2.4 KiB
C
103 lines
2.4 KiB
C
|
|
#include <stdio.h>
|
|
|
|
#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;
|
|
} |