struct Arr
{
int *pBase; //存储的是数组的第一个元素的地址
int len; //数组所能容纳的最大元素的个数
int cnt; //数组有效元素的个数
};
/*
数组初始化函数
初始化仅仅是给出一个具有一定长度的数组,但是数组中没有有效值
*/
void init_arr(struct Arr * pArr,int len)
{
pArr->pBase=(int *)malloc(sizeof(int)*len);
if(NULL==pArr->pBase){
printf("动态内存分配失败");
exit(-1); //终止整个程序
}
else{
pArr->len=len;
pArr->cnt=0;
}
}
/*
判断数组是否为空的函数
*/
int is_empty(struct Arr * pArr){
if(pArr->cnt==0){
return 0; //0代表true
}
else{
return 1; //1代表false
}
}
/*
数组输出显示函数
在进行数组输出时,首先应该判断数组是否为空
*/
void show_arr(struct Arr * pArr){
if(is_empty(pArr)==0){
printf("当前数组为空!");
}
else{
int i;
for(i=0; i<pArr->cnt; ++i){
printf("%d ",pArr->pBase[i]);
}
printf("\n");
}
}
/*
判断数组是否已满的函数
*/
int is_full(struct Arr * pArr){
if(pArr->cnt==pArr->len){
return 0; //0代表true,表示已满
}
else{
return 1; //1代表false,表示未满
}
}
/*
在数组的最后追加一个元素
在追加数组元素前要判断当前数组是否已满,已满时不允许追加新的元素
*/
int append_arr(struct Arr *pArr,int val){
if(is_full(pArr)==0){
return 0;
}
else{
pArr->pBase[pArr->cnt]=val;
pArr->cnt++;
return 1;
}
}
/*
在数组的指定位置插入元素
插入算法:首先将被插入位置的元素全部后移,然后再将空出来的位置插入。
根据算法原理,所以,在插入的时候应该检查数组是否已满。
上述两种情况均合理时,进行数据的插入,插入时,若插入第三个位置,实际是将数据赋值给arr[pos-1]
注意:再将插入位置后的元素后移时,应该从后向前移动。否则,将会造成“被移到”的位置的值被覆盖
*/
int insert_arr(struct Arr *pArr,int pos,int val){
if(is_full(pArr)==0){
return 0; //0表示当前数组已满,无法再进行插入
}
//在数组可插入的情况下,应该检查用户输入的pos位置值是否合理
if(pos<0||pos>(pArr->len)){
return 1; //1表示当前用户插入位置不合法
}
//移动位置
int i;
for(i=pArr->cnt -1;i>=pos-1;--i){
pArr->pBase[i+1]=pArr->pBase[i];
}
//空缺位置插入元素
pArr->pBase[pos-1]=val;
return 2; //2表示当前插入成功
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有