#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct Arr
{
int * pBase;//存储的是数组第一个元素的地址
int len; //数组所能容纳的最大元素的个数
int cnt;//当前数组有效元素的个数
};
void init_arr(struct Arr * pArr,int length);
bool is_empty(struct Arr * pArr);
bool is_full_arr(struct Arr * pArr);
bool show_arr(struct Arr * pArr);
bool append_arr(struct Arr * pArr,int val); //追加,val为追加进去的数
bool insert_arr(struct Arr * pArr,int pos,int val);//pos为插入的位置pos从1开始,val为插入的值
int main(void)
{
struct Arr arr;
init_arr(&arr,6);//初始化
printf("追加前的数组为:");
show_arr(&arr);//追加前的数组
append_arr(&arr,1); //追加,1为追加进去的数
append_arr(&arr,2);
append_arr(&arr,3);
append_arr(&arr,4);
append_arr(&arr,5);
printf("追加后的数组为:");
show_arr(&arr);//追加后的数组
insert_arr(&arr,3,99);//在位置3插入99这个值
printf("插入后的数组为:");
show_arr(&arr);//插入后的数组
}
void init_arr(struct Arr * pArr,int length)//初始化
{
pArr->pBase=(int*)malloc(sizeof(int)*length);//给pArr这个指针变量所指向的那个结构体变量中的pBase这个成员分配内存
if(NULL==pArr->pBase) //如果不合法
{
printf("动态内存分配失败!\n") ;
exit(-1);
}
else
{
pArr->len=length;
pArr->cnt=0;
}
return ;
}
bool is_empty(struct Arr * pArr)
{
if(0==pArr->cnt)
{
return true;
}
else
{
return false;
}
}
bool show_arr(struct Arr * pArr)
{
int i;
if(is_empty(pArr))//如果为空
{
printf("数组为空!\n") ;
}
else//不为空
{
for(int i=0;i<pArr->cnt;++i)
{
printf("%d ",pArr->pBase[i]);
}
printf("\n");
}
}
bool is_full(struct Arr * pArr)
{
if(pArr->cnt==pArr->len)
{
return true;
}
else
{
return false;
}
}
bool append_arr(struct Arr * pArr,int val)
{
if(is_full(pArr) )//满时返回false
{
return false;
}
//不满时追加
else
{
pArr->pBase[pArr->cnt]=val;
(pArr->cnt)++;
return true;
}
}
bool append(struct Arr * pArr,int val)
{
if(is_full(pArr))//满时返回false
{
return false;
}
//不满时追加
else
{
pArr->pBase[pArr->cnt]=val;
(pArr->cnt)++;
return true;
}
}
bool insert_arr(struct Arr * pArr,int pos,int val)
{
int i;
if(is_full(pArr))//为满时
{
return false;
}
if(pos<1||pos>pArr->cnt+1)//不为满时,但pos为非正数或pos超过有效位置+1 (cnt+1)也就是只能在末尾和cnt里面插入
{
return false;
}
else
{
for(i=pArr->cnt-1;i>=pos-1;--i)
{
pArr->pBase[i+1]=pArr->pBase[i];
}
pArr->pBase[pos-1]=val;
(pArr->cnt)++;
}
}
数据结构-连续存储【数组】处插入insert
最新推荐文章于 2024-08-28 09:00:00 发布