#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>
struct List_Exten { //定义结构体数组
int *A;
int n;
int c; // capacity
};
void List_Init(List_Exten* List);
void List_Append(List_Exten* List, int value);
void List_Show(List_Exten* List);
void List_Init(List_Exten* List) { //初始化数组
List->c = 1;
List->n = 0;
List->A = (int*)malloc(sizeof(int)*List->c); //给A分配内存
}
void List_Append(List_Exten* List, int value) { //参考Python 中的append()函数
if (List->c == List->n) { //如果容量满了,扩充2倍
List->c = 2 * List->c;
int* B = (int*)malloc(sizeof(int)*List->c); //创建一个数组B,将A的数据copy给B,然后丢弃A,将结构体List指向B的首地址
for (int i = 0; i < List->n; ++i) {
B[i] = List->A[i];
}
printf("extented!\n");
free(List->A);
List->A = B;
}
List->A[List->n++] = value;
}
void List_Show(List_Exten* List) {
for (int i = 0; i < List->n; ++i) {
printf("%d\n",List->A[i]);
}
}
int main() {
List_Exten *List = (List_Exten*)malloc(sizeof(List_Exten)); //分配内存
List_Init(List);
List_Show(List);
List_Append(List, 1);
List_Show(List);
List_Append(List, 2);
List_Show(List);
List_Append(List, 3);
List_Show(List);
List_Append(List, 4);
List_Show(List);
List_Append(List, 5);
List_Show(List);
List_Append(List, 6);
List_Show(List);
List_Append(List, 7);
List_Show(List);
}
C语言实现可扩充的数组
猜你喜欢
转载自blog.csdn.net/qq_35025383/article/details/80845139
今日推荐
周排行