#include <stdio.h>
#include <malloc.h>
struct Arr{
int *pBase; //数组的首地址
int len;//数组的长度
int cnt;//数组的当前有效个数
};
void Init_arr(struct Arr *P, int length);//初始化
bool append_arr(struct Arr *P, int value);//追加元素
bool insert_arr(struct Arr *p, int position, int value);//插入元素
bool delect_arr(struct Arr *P, int *position, int *value);//删除元素
void show_arr(struct Arr *P);//显示元素
bool is_full(struct Arr *P);//判断数组是否为空
void inversion_arr(struct Arr *P);//元素倒置
void find_value(struct Arr *P, int value);//查找
int main()
{
int value, position;
struct Arr arr;
Init_arr(&arr, 10);//初始化
append_arr(&arr, 1);//追加元素
append_arr(&arr, 2);
append_arr(&arr, 3);
append_arr(&arr, 4);
append_arr(&arr, 5);
append_arr(&arr, 6);
insert_arr(&arr, 2, 99);//在第二个位插入99
insert_arr(&arr, 2, 10);//在第7个位置插入10
show_arr(&arr);//显示元素
inversion_arr(&arr);//将数组倒置
show_arr(&arr);
printf("请输入删除的元素的位置及元素:");
scanf("%d,%d", &position,&value);
delect_arr(&arr, &position, &value);
show_arr(&arr);
find_value(&arr, value);
return 0;
}
void Init_arr(struct Arr *P, int length)
{
P->pBase = (int *)malloc(sizeof (int) * length);
if(P->pBase == NULL)
{
printf("动态内存分配失败");
exit(-1);
}
else
{
P->len = length;
P->cnt = 0;
}
return;
}
bool is_empty(struct Arr *P)
{
if(P->cnt ==0)
return true;
return false;
}
bool is_full(struct Arr *P)
{
if(P->cnt == P->len)
return true;
return false;
}
void show_arr(struct Arr *P)
{
if(is_empty(P))
printf("此数组为空\n");
else
printf("%d\n",P->cnt);
for(int i = 0; i < P->cnt ; i++)
printf("%d ",P->pBase[i]);
printf("\n");
}
bool append_arr(struct Arr *P, int value)
{
if(is_full(P))
return false;
P->pBase[P->cnt] = value;
P->cnt++;
return true;
}
bool insert_arr(struct Arr *P, int position, int value)
{
int i;
if(is_full(P))
return false;
if(position <0 || position > P->cnt)
return false;
P->cnt ++;
for(i = P->cnt - 1; i >= position; i --)
P->pBase[i] = P->pBase[i - 1];
P->pBase[position -1] = value;
return true;
}
bool delect_arr(struct Arr *P, int *position, int *value)
{
int i;
if(is_empty(P))
return false;
if(*position < 0 || *position > P->cnt)
return false;
*value = P->pBase[*(position - 1)];
for(i = *position; i < P->cnt; i ++)
{
P->pBase[i-1] = P->pBase[i];
}
P->cnt --;
return true;
}
void inversion_arr(struct Arr *P)
{
int i = 0, j = P->cnt - 1, t;
while(i < j)
{
t= P->pBase[j];
P->pBase[j] = P->pBase[i];
P->pBase[i] = t;
i ++;
j --;
}
}
void find_value(struct Arr *P, int value)
{
int i,j = 0,count = 0,flag[100];
for(i = 0; i < P->cnt; i++)
{
if(value == P->pBase[i])
{
printf("找到了查找的元素,在位置%d处\n",i);
}
}
printf("没有找到元素\n");
}
连续数组存储
最新推荐文章于 2022-03-04 17:31:20 发布