#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct Add{
int * pBase;
int len;
int cnt;
}Arr;
void show_arr(Add * pArr);
void init_arr(Add * pArr, int length);
bool is_empty(Add * pArr);
bool is_full(Add * pArr);
bool insert_arr(Add * pArr, int pos, int val);
bool addition_arr(Add * pArr, int val);
bool delete_arr(Add * pArr, int pos , int * pVal);
int main()
{
Arr arr;
int val;
return 0;
}
void init_arr(Add * pArr, int length)
{
pArr->pBase = (int *)malloc(sizeof(int) * length);
if(NULL == pArr->pBase){
printf("动态数组分配失败
");
exit(-1);
}
else{
pArr->len = length;
pArr->cnt = 0;
}
return;
}
bool is_full(Add * pArr)
{
if (pArr->cnt == pArr->len)
return true;
else
return false;
}
bool addition_arr(Add * pArr, int val)
{
if( is_full(pArr) )
{
printf("数组已满,无法再次追加新值!
");
return false;
}
else
{
pArr->pBase[pArr->cnt] = val;
pArr->cnt++;
}
}
bool insert_arr(Add * pArr, int pos, int val)
{
if ( pos<1 || pos > pArr->cnt + 1 )
{
printf("插入位置无效,请尝试重新插入
");
return false;
}
else if ( is_full(pArr) )
{
printf("数组已满,无法插入新值
");
return false;
}
else{
for (int i = pArr->cnt-1; i >= pos-1; i--)
{
pArr->pBase[i+1] = pArr->pBase[i];
}
pArr->pBase[pos-1] = val;
pArr->cnt++;
}
}
void show_arr(Add * pArr)
{
if ( is_empty(pArr) )
{
printf("数组为空
");
}
else
{
for (int i = 0; i < pArr->cnt; i++)
{
printf("%d ",pArr->pBase[i]);
}
printf("
");
}
}
bool is_empty(Add * pArr)
{
if (pArr->cnt == 0){
return true;
}
else
return false;
}
bool delete_arr(Add * pArr, int pos , int * pVal)
{
if ( is_empty(pArr) )
return false;
if (pos<1 || pos>pArr->cnt-1)
return false;
*pVal = pArr->pBase[pos-1];
for (int i = pos; i < pArr->cnt; i++)
{
pArr->pBase[i-1] = pArr->pBase[i];
}
pArr->cnt--;
}