前情提要
在之前的 C 语言的学习当中,我们提到了 malloc
和 free
,这两个函数是用来动态分配内存的。
看好。
动态分配的代码是这样写的。
1 2 3 4 5 6 7 8
| #include <stdio.h> #include <stdlib.h> int main() { int n; scanf("%d", &n); int *a = (int*)malloc(sizeof(int)*n); free(a); }
|
结构体结构
1 2 3 4 5
| typedef struct { ElemType *data; int length; int listSize; } DA;
|
我来解释一下,这个结构体声明。
length 是你实际存了多少的东西,listSize 是你目前表的最大长度。
动态分配的使用
其实,无非就是创、增、删、改、读、销。
创建一个动态分配
其实,就是借空间,然后初始化。当然,有的是选择将借空间和初始化这两个操作分开来做。
1 2 3 4
| #define INITIALSIZE 100 DA da; da.listSize = INITALSIZE; da.length = 0;
|
初始化动态分配
算了,我还是写出来吧。
1 2 3 4
| void initDynamicAllocation(DA *da) { da->data = (ElemType*)malloc(sizeof(ElemType)*INITIALSIZE); }
|
添加内容
1 2 3 4 5
| void addContent(DA *da, ElemType content) { ElemType *p = da->data+length; *p = content; da->length++; }
|
参考资料
- 数据结构(C 语言版)| 作者:严蔚敏女士