列表相关接口调试通过

This commit is contained in:
建峰 2024-06-19 16:47:31 +08:00
parent 496ac36ca8
commit fcce7a9202

View File

@ -219,7 +219,7 @@ bool list_insert(list_t list, int index, list_data_t data)
list->array = array; list->array = array;
list->capacity = capacity; list->capacity = capacity;
} }
memmove(&list->array[index + 1], &list->array[index], list_size(list)); memmove(&list->array[index + 1], &list->array[index], list_size(list) * sizeof(list_data_t));
list->array[index] = data; list->array[index] = data;
list->size += 1; list->size += 1;
return true; return true;
@ -269,8 +269,8 @@ bool list_clear(list_t list)
list_data_t list_get(list_t list, int index) list_data_t list_get(list_t list, int index)
{ {
assert(index >= 0 && index < list_size(list)); assert(index >= -list_size(list) && index < list_size(list));
return list->array[index]; return index >= 0 ? list->array[index] : list->array[list_size(list) + index];
} }
bool list_set(list_t list, int index, list_data_t data) bool list_set(list_t list, int index, list_data_t data)
@ -286,7 +286,7 @@ void list_print(list_t list)
{ {
for (int i = 0; i < list_size(list); i++) for (int i = 0; i < list_size(list); i++)
{ {
printf("%d ", list->array[i]); printf("%2d ", list->array[i]);
} }
printf("\n"); printf("\n");
} }
@ -296,6 +296,7 @@ void list_test(void)
{ {
int i = 0; int i = 0;
list_data_t data = 0;
struct _list list; struct _list list;
list_init(&list); list_init(&list);
@ -325,6 +326,33 @@ void list_test(void)
list_print(&list); list_print(&list);
} }
printf("----- get -----\n");
data = list_get(&list, 0);
printf("list[0] = %2d\n", data);
data = list_get(&list, 17);
printf("list[17] = %2d\n", data);
data = list_get(&list, 5);
printf("list[5] = %2d\n", data);
printf("----- like python -----\n");
data = list_get(&list, -1);
printf("list[-1] = %2d\n", data);
data = list_get(&list, -5);
printf("list[-5] = %2d\n", data);
data = list_get(&list, -18);
printf("list[-18] = %2d\n", data);
printf("----- set -----\n");
for (i = 0; i < 18; i++)
{
list_set(&list, i, i);
list_print(&list);
}
list_print(&list); list_print(&list);
list_destory(&list); list_destory(&list);
} }