数据结构-顺序表(3)顺序表的建立、销毁、置空
来源:互联网 发布:mac ai抠图教程视频 编辑:程序博客网 时间:2024/06/08 11:10
----代码-------------------------------------------------------------------------------------------
int InitList(MyList *L){ L->data = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));//为线性表分配存储空间 if(!L->data) return 0;//分配失败 L->length = 0;//记录表长(空表) L->listsize = LIST_INIT_SIZE;//记录已分配存储空间 return 1;//分配成功}int DestroyList(MyList *L){ if(!L->data) return 0;//线性表不存在 free(L->data);//释放存储空间 L->data = NULL;//初始化指针 return 1;}int ClearList(MyList *L){ if(!L->data) return 0;//线性表不存在 L->length;L->length = 0;//记录表长(空表) return 1;//分配成功}
----分析与思考-------------------------------------------------------------------------------------------
顺序表使用了动态分配内存的方法,建立顺序表使用了malloc函数申请一块连续的内存空间用于存储数据;销毁顺序表则使用了free函数来释放内存;顺序表的置空则使用了一个偷懒的方法,简单地将顺序表的表长修改为0。
1.malloc与calloc
void * malloc(size_t size);
说明:malloc向系统申请分配指定size个字节的内存空间,返回首地址,返回类型是void *类型,即未确定类型的指针,可以强制转换为任何其他类型的指针。
使用方法: L->data = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));
(1)malloc函数返回的是void *类型,必须经过强制转换才可以赋值给某种类型的指针变量。
(2)函数的实参为LIST_INIT_SIZE * sizeof(ElemType),其中,sizeof(ElemType)用于指明每个数据的数据类型,LIST_INIT_SIZE为顺序表初始的大小,LIST_INIT_SIZE * sizeof(ElemType)就是所要分配的内存空间大小。
void * calloc(size_t n,size_t size);
说明:calloc向系统申请分配n个长度为size的连续空间,并自动初始化为0,返回首地址,返回类型是void *类型。
使用方法:L->data = (ElemType*)calloc (LIST_INIT_SIZE,sizeof(ElemTyoe);
(1)calloc函数返回的是void *类型,必须经过强制转换才可以赋值给某种类型的指针变量。
(2)函数的实参为LIST_INIT_SIZE和sizeof(ElemType),其中,sizeof(ElemType)用于指明每个成员字节长度,LIST_INIT_SIZE成员数目,LIST_INIT_SIZE * sizeof(ElemType)就是所要分配的内存空间大小。
主要区别:
ralloc会将分配的内存空间都初始化为0,而malloc不会,所分配的内存空间中存储着随机的垃圾数据。
2.free
void free(void * p);
说明:free将释放p指向的内存空间,被释放的空间通常被送入可用存储区域。
使用方法:free(L->data);free(L->data);
(1)函数的实参为L->data,即为释放的内存空间的首地址。
(2)函数并不会改变实参的值,故在使用完free函数后应该初始化指针,防止出现错误
- 数据结构-顺序表(3)顺序表的建立、销毁、置空
- 区别顺序表的清空和销毁两个操作
- 数据结构-顺序表(3)顺序表的空表判断、取表长、取元素
- 数据结构之顺序表的建立
- 实验一:数据结构顺序表的建立
- 顺序表的建立(顺序存储)
- 数据结构之顺序表(创建、使用、销毁)
- 数据结构|顺序表的建立(实验1)
- 顺序表的建立
- [数据结构]c语言实现顺序栈的入栈,出栈,清空,销毁等操作
- 数据结构-顺序表建立及运算
- (数据结构)顺序表的建立,增删查改
- 数据结构之顺序表的建立和增删改查
- 顺序表(数据结构)
- 线性表的顺序建立
- C++ 顺序表的建立
- 数据结构--线性表的顺序表示(顺序表)
- 数据结构(一)顺序表3:顺序表常见题型
- [线性代数]矩阵的特征值与特征向量
- 最长回文子串——Manacher 算法
- 在VMware中安装Mac OS 操作系统详细教程
- 文件压缩
- VS2017开发activex
- 数据结构-顺序表(3)顺序表的建立、销毁、置空
- 杭电 2136-Largest prime factor
- Python chapter 2&3 learning notes
- 随机森林
- 阿里云CentOS 7下配置nginx环境
- 上传头像
- Android Studio中上传项目到码云时的一些问题
- Linux教程【3】VMWare的三种网络连接方式-远程登录管理工具SecureCRT-Winscp文件拷贝工具
- Apache httpd.conf配置文件 3(虚拟主机)