// 设计列表数据结构操作函数,包含创建空列表,列表添加、删除和修改等操作 #include #include #include // memset int *create_list(int cap_size) { int *p = (int *)malloc(cap_size * sizeof(int)); if (NULL == p) perror("malloc error"); else memset(p, 0, cap_size * sizeof(int)); return p; } int *add(int *p, int size, int element) { // 判断当前的空间是否已满 int i = 0; while (i < size && p[i] != 0) // *(p+i) = p[i] { i++; // 这里不能用 p++, 因为会改变地址偏移量 // p++; } if (i < size) // 空间未满 { p[i] = element; // 将 element 添加到空间中 } else if (i == size) { printf("空间已满, 开始扩容\n"); int *new_p = (int *)realloc(p, (size + 1) * sizeof(int)); // 重新分配空间 if (NULL == p) perror("realloc error"); else { p = new_p; p[i] = element; } return p; } } int main() { int *p = create_list(4); p[0] = 2, p[1] = 3, p[2] = 4; for (int i = 0; i < 4; i++) printf("%d ", *(p + i)); printf("\n"); add(p, 4, 100); // p[3] = 100; add(p, 4, 200); // 100 add(p, 4, 300); // 100 add(p, 4, 400); // 100 for (int i = 0; i < 6; i++) printf("%d ", *(p + i)); printf("\n"); free(p); return 0; }