struct Arr
{
int *pBase; // 存储的是数组第一个元素的地址
int len; // 数组所能容纳的最大元素的个数
int cnt; // 当前数组有效元素的个数
//int increment;//自动增长因子
};
void init_Arr(struct Arr *arr, int lenght);
bool append_Arr(struct Arr *arr, int value);
bool insert_Arr(struct Arr *arr, int value, int index); // index:下标
bool delete_Arr(struct Arr *arr, int *value, int index);
bool is_empty(struct Arr *arr);
bool is_full(struct Arr *arr);
void sort_Arr(struct Arr *arr); // 排序
void show_Arr(struct Arr *arr);
void innversion_Arr(struct Arr *arr); // 倒置
int main()
{
int valu;
struct Arr arr;
init_Arr(&arr, 8);
append_Arr(&arr, 4023);
append_Arr(&arr, 100);
append_Arr(&arr, 2333);
append_Arr(&arr, 2333);
append_Arr(&arr, 2333);
append_Arr(&arr, 2313);
show_Arr(&arr);
insert_Arr(&arr, 123, 2);
show_Arr(&arr);
delete_Arr(&arr, &valu, 2);
show_Arr(&arr);
innversion_Arr(&arr);
show_Arr(&arr);
sort_Arr(&arr);
show_Arr(&arr);
return 0;
}
void init_Arr(struct Arr *arr, int lenght)
{
arr->pBase = malloc(sizeof(int)* lenght);
if (NULL == arr->pBase) {
printf("内存分配失败");
exit(-1);
} else {
arr->len = lenght;
arr->cnt = 0;
}
return;
}
bool append_Arr(struct Arr *arr, int value)
{
if (is_full(arr))
return false;
arr->pBase[arr->cnt] = value;
arr->cnt++;
return true;
}
bool insert_Arr(struct Arr *arr, int value, int index)
{
if (is_full(arr))
return false;
if (index < 0 || index > arr->cnt) {
printf("请输入有效位置");
return false;
}
for (int i = arr->cnt - 1; i >= index; -- i) {
arr->pBase[i + 1] = arr->pBase[i];
}
arr->pBase[index] = value;
arr->cnt ++;
return true;
}
bool delete_Arr(struct Arr *arr, int *value, int index)
{
if (is_empty(arr))
return false;
if (index > arr->cnt - 1 || index < 0) {
printf("请输入合法位置");
return false;
}
*value = arr->pBase[index];
for (int i = index; i < arr->cnt - 1; i ++) {
arr->pBase[i] = arr->pBase[i + 1];
}
arr->cnt --;
return true;
}
bool is_empty(struct Arr *arr)
{
if (0 == arr->cnt) {
printf("数组为空\n");
return true;
}
return false;
}
bool is_full(struct Arr *arr)
{
if (arr->cnt == arr->len) {
printf("内存已满");
return true;
}
return false;
}
void sort_Arr(struct Arr *arr)
{
int a, i, j;
for (i = 0; i <arr->cnt; i ++) {
for (j = i + 1; j < arr->cnt; j ++) {
if (arr->pBase[i] > arr->pBase[j]) {
a = arr->pBase[i];
arr->pBase[i] = arr->pBase[j];
arr->pBase[j] = a;
}
}
}
}
void show_Arr(struct Arr *arr)
{
if (is_empty(arr)) {
printf("数组为空\n");
} else {
for (int i = 0; i < arr->cnt; i ++) {
printf("%d\n", arr->pBase[i]);
}
}
printf("\n");
}
void innversion_Arr(struct Arr *arr)
{
int i = 0;
int j = arr->cnt - 1;
int a;
while (i < j) {
a = arr->pBase[i];
arr->pBase[i] = arr->pBase[j];
arr->pBase[j] = a;
++i;
--j;
}
return;
}
这里是自定义的数组的实现过程,可以参考