c语言数组的动态分配

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

下面代码添加到头文件里面

#include

#include

struct data

{

int*p;//指针保存数组起始点

int length;//保存数组长度

int reallength;//实际分配内存长度

int state;//0代表无序,1代表有序从小到大,2代表有序从大到小

};

struct find

{

int**pp;

int n;

};

void init(struct data*pdata);//初始化

void reinit(struct data*pdata);//重新初始化

void addobject(struct data*pdata,int num);//增加一个元素

void addobjects(struct data*pdata,int*pnum,int n);//增加一个数组void printf1(struct data*pdata);//打印一个出来

void sort(struct data*pdata,int obj);//实现排序obj=0从小到大,否则从大到小

int*finddata(struct data*pdata,int num);//找到并返回第一次找到的地址void change(struct data*pdata,int oldnum,int newnum);//修改一个数据void insert(struct data*pdata,int num,int insertnum,int headback);//插入一个数据,0代表前插,1代表后插

void deleteone(struct data*pdata,int num);//删除第一个找到的数据

void deleteall(struct data*pdata,int num);//删除找到的全部数据

struct find findalldata(struct data*pdata,int num);//返回一片内存,包含所有找到的元素

添加到源文件中

#include

#include

#include"动态数组.h"

void init(struct data*pdata)

{

pdata->p=NULL;

pdata->length=0;

pdata->reallength=0;

pdata->state=0;

}

void reinit(struct data*pdata)

{

if(pdata->p==NULL)

{

return;

}

else

{

free(pdata->p);

pdata->p=NULL;

pdata->length=0;

pdata->reallength=0;

pdata->state=0;

}

}

void addobject(struct data*pdata,int num)

{

if(pdata->p==NULL)

{

pdata->p=(int*)malloc(sizeof(int));

*(pdata->p)=num;

pdata->length++;

pdata->reallength++;

}

else

{

if(pdata->length==pdata->reallength)

{

(pdata->length)++;

(pdata->reallength)++;

pdata->p=(int*)realloc(pdata->p,

(pdata->length)*sizeof(int));

pdata->p[pdata->length-1]=num;

}

else

{

(pdata->length)++;

pdata->p[pdata->length-1]=num;

}

}

}

void addobjects(struct data*pdata,int*pnum,int n)

{

if(pdata->p==NULL)

{

pdata->p=(int*)malloc(sizeof(int)*n);

for(int i=pdata->length;ilength+n;i++)

{

pdata->p[i]=pnum[i];

}

pdata->length+=n;

pdata->reallength+=n;

}

else

{

if(pdata->length+n<=pdata->reallength)

{

for(int i=pdata->length;ilength+n;i++)

{

pdata->p[i]=pnum[i-pdata->length];

}

(pdata->length)+=n;

}

else

{

pdata->p=(int*)realloc(pdata->p,(pdata->length+ n)*sizeof(int));

for(int i=pdata->length;ilength+n;i++)

{

pdata->p[i]=pnum[i-pdata->length];

}

相关文档
最新文档