测试用例

This commit is contained in:
2026-08-29 11:39:28 +08:00
parent a0758766c5
commit 8fd65b0de0
19 changed files with 1723 additions and 432 deletions
+31 -7
View File
@@ -6,14 +6,18 @@
c_err_t c_ArrayStack_Init(c_ArrayStack_t* self, int obj_size, c_size_t capacity) {
if (!self || obj_size <= 0) return C_ERR_PARAM;
self->obj_size = obj_size;
self->capacity = (capacity > 0) ? capacity : DEFAULT_INITIAL_CAPACITY;
self->obj_size = (int)obj_size;
self->size = 0;
self->capacity = capacity;
self->array = C_ALLOC(self->capacity * self->obj_size);
if (!self->array) {
self->capacity = 0;
return C_ERR_NOMEM;
if (capacity==0) {
self->array = NULL;
}else {
self->array = C_ALLOC(self->capacity * self->obj_size);
if (!self->array) {
self->capacity = 0;
return C_ERR_NOMEM;
}
}
return C_ERR_OK;
@@ -33,7 +37,7 @@ c_err_t c_ArrayStack_Push(c_ArrayStack_t* self, void* obj) {
if (!self || !self->array || !obj) return C_ERR_PARAM;
if (self->size >= self->capacity) {
const c_size_t new_capacity = self->capacity << 1;
const c_size_t new_capacity = (self->capacity==0)?DEFAULT_INITIAL_CAPACITY:(self->capacity<<1);
void* new_array = C_REALLOC(self->array, new_capacity * self->obj_size);
if (!new_array) {
return C_ERR_NOMEM;
@@ -61,6 +65,16 @@ c_err_t c_ArrayStack_Pop(c_ArrayStack_t* self, void* obj) {
memcpy(obj, pop_src, self->obj_size);
self->size--;
if (self->size > 0 && self->size <= (self->capacity >> 2)) {
c_size_t new_capacity = self->capacity >> 1;
void* new_array = C_REALLOC(self->array, new_capacity * self->obj_size);
if (new_array) {
self->array = new_array;
self->capacity = new_capacity;
}
}
return C_ERR_OK;
}
@@ -82,6 +96,16 @@ c_err_t c_ArrayStack_Remove(c_ArrayStack_t* self, c_size_t index) {
}
self->size--;
if (self->size > 0 && self->size <= (self->capacity >> 2)) {
c_size_t new_capacity = self->capacity >> 1;
void* new_array = C_REALLOC(self->array, new_capacity * self->obj_size);
if (new_array) {
self->array = new_array;
self->capacity = new_capacity;
}
}
return C_ERR_OK;
}