首页 新闻 会员 周边

关于数组的数据结构实现的部分程序,编译链接没有问题,不能,希望志同道合的朋友能够帮忙看看,谢谢

0
悬赏园豆:5 [待解决问题]

/*数组的数据结构实现,最重要的创建一个数组,首先要思考一个数组
**应该包含的信息,一个常量指针、一个范围长度,用一个特定的结构
**来实现(思考),因为创建数组的长度不确定,所以要使用动态内存
**分配,思考把数组的创建当做一个过程还是一个函数
*/
#include<stdio.h>
#include<stdlib.h>
#define DEBUG 1
/*存储数组信息的结构体*/
typedef struct stu
{
int *ptr;
int len;
int cnt;
} ARR,* PARR;
/*函数接口的定义和说明*/
PARR creat_arr(int len);/*创建一个数组,设置当前元素个数cnt为0*/
void init_arr(PARR parr);/*为一个创建的数组初始化,并刷新cnt的值*/
void destroy_arr(PARR parr);/*销毁一个数组*/
/*测试函数*/
#if(DEBUG)
void main(void)
{
PARR a=creat_arr(6);
printf("%d",a->cnt);
init_arr(a);
printf("%d",*(a->ptr+1));
}
#endif
/*函数内部实现细节*/
PARR creat_arr(int len)
{
PARR parr=NULL;
ARR arr;
arr.len=len;
arr.cnt=0;
arr.ptr=(int *)malloc(sizeof(int)*len);
if(NULL==arr.ptr)
{
printf("内存不够,分配失败!");
exit(1);
}
return parr=&arr;
}
void init_arr(PARR parr)
{
if(NULL==parr->ptr)
{
printf("不存在这个数组!");
exit(1);
}
int i=0;
do{
printf("请为创建的数组初始化!");
scanf("%d",parr->ptr+i);
if(NULL!=parr->ptr+i)
{ if(i<parr->len)
parr->cnt+=1;
else
exit(1);
}
i++;
}
while((parr->ptr+i-1)!=NULL);
}
void destroy_arr(PARR parr)
{
if(NULL==parr->ptr)
exit(0);
else
free(parr->ptr);
}

dmzc的主页 dmzc | 初学一级 | 园豆:197
提问于:2017-04-23 15:04
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册