抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前情提要

在之前的 C 语言的学习当中,我们提到了 mallocfree,这两个函数是用来动态分配内存的。
看好。
动态分配的代码是这样写的。

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);
/* initial process */
}

添加内容

1
2
3
4
5
void addContent(DA *da, ElemType content) {
ElemType *p = da->data+length;
*p = content;
da->length++;
}

参考资料

  1. 数据结构(C 语言版)| 作者:严蔚敏女士