#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
struct Arr
{
int *pBase;
int len;
int cnt;
};
void init_arr(struct Arr *arr, int length);
bool append_arr(struct Arr *arr, int val);
bool delete_arr(struct Arr *arr, int pos, int *pVal);
int get(struct Arr *arr, int pos);
bool is_empty(struct Arr *arr);
bool is_full(struct Arr *arr);
void sort_arr();
void show_arr(struct Arr *arr);
void inversion_arr(struct Arr *arr);
int main()
{
struct Arr arr;
init_arr(&arr, 7);
append_arr(&arr, 1);
append_arr(&arr, 2);
append_arr(&arr, 3);
append_arr(&arr, 4);
show_arr(&arr);
inversion_arr(&arr);
show_arr(&arr);
return 0;
}
void init_arr(struct Arr *arr, int length)
{
arr->pBase = (int *)malloc(sizeof(arr) * length);
if (arr->pBase == NULL)
{
printf("内存分配失败");
}
else
{
arr->len = length;
arr->cnt = 0;
}
}
bool is_full(struct Arr *arr)
{
if (arr->cnt == arr->len)
{
return true;
}
return false;
}
bool append_arr(struct Arr *arr, int val)
{
if (is_full(arr))
{
return false;
}
arr->pBase[arr->cnt] = val;
arr->cnt++;
return true;
}
bool delete_arr(struct Arr *arr, int pos, int *pVal)
{
if (is_empty(arr))
{
return false;
}
if (pos < 1 || pos > arr->cnt)
{
return false;
}
int i;
*pVal = arr->pBase[pos - 1];
for (i = pos - 1; i < arr->cnt; i++)
{
arr->pBase[i] = arr->pBase[i + 1];
}
(arr->cnt)--;
return true;
}
bool is_empty(struct Arr *arr)
{
if (arr->cnt == 0)
{
printf("数组为空");
return true;
}
return false;
}
void show_arr(struct Arr *arr)
{
for (int i = 0; i < arr->cnt; i++)
{
printf("%d\n", arr->pBase[i]);
}
}
int get(struct Arr *arr, int pos)
{
return arr->pBase[pos - 1];
}
void inversion_arr(struct Arr *arr)
{
int i = 0;
int j = arr->cnt - 1;
int temp;
while (i < j)
{
temp = arr->pBase[i];
arr->pBase[i] = arr->pBase[j];
arr->pBase[j] = temp;
i++;
j--;
}
}
C语言连续存储数组的算法
最新推荐文章于 2024-07-25 23:20:14 发布