c语言变长数组.docx

上传人:教**** 文档编号:83045819 上传时间:2023-03-28 格式:DOCX 页数:5 大小:37.43KB
返回 下载 相关 举报
c语言变长数组.docx_第1页
第1页 / 共5页
c语言变长数组.docx_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《c语言变长数组.docx》由会员分享,可在线阅读,更多相关《c语言变长数组.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、c语言变长数组c语变长(动态)数组ArrayList关于变长(动态)数组 ArrayList缘起在c语的程序设计中,想要实现对个数组的长度的动态变化其实是较困难的,并且也是低效且不尽实的。但是看到别在做arraylist时,我决定将课上所学习的变长数组放上来。另,正是由于变长数组的缺点使得我们可以引链表的学习。代码h件中的代码样例#ifndef _ARRAY_H_#define _ARRAY_H_typedef struct。int*array;int size; Array;Array array_create(int init_size);void array_free(Array *a)

2、;int array_size(const Array *a);int*array_at(Array *a,int index);void array_inflate(Array *a,int more_size);#endif/* _h */c件中的代码样例#include变长数组.h#include#include#define BLOCK_SIZE 20/typedef struct/。/ int *array;/ int size;/ Array;Array array_create(int init_size)。Array a;a.size = init_size;a.array =

3、(int*)malloc(sizeof(int)* a.size);return a;void array_free(Array *a)。free(a-array);a-array =NULL;a-size =0;int array_size(const Array *a)。return a-size;int*array_at(Array *a,int index)。if(index = a-size)array_inflate(a,(index / BLOCK_SIZE +1)* BLOCK_SIZE - a-size);return&(a-arrayindex);void array_in

4、flate(Array *a,int more_size)。int*p =(int*)malloc(sizeof(int)*(a-size + more_size);for(int i =0; i size;+i)。pi= a-arrayi;free(a-array);a-array =NULL;a-size += more_size;缺点分析1、变长在进较的数组进变长时,每次需要新建个更的数组(长度增为 (index / BLOCK_SIZE + 1) * BLOCK_SIZE ,但是每次都需要进拷贝操作,将原数组拷贝给更长的新数组然后释放原数组的内存。当变长操作需要多次重复的进时,变长数组的式效率会降低。2、内存假设我们能使的内存是有定的限制的,使变长数组的式时,每次在原数组的后新开个更长的数组(若前的已经被释放出的内存够会在前开)当数组长度常的时候,可能会因为前的长度不够新开增长的数组,后的内存不够,所以导致程序崩溃。也就是说,使变长数组的式进储存,其实只能利好所分配的内存的约三分之,这当然是种既舍弃空间缺乏时间的处理式。结语由此,我们引了链表这种数据结构。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁