#include <stdio.h> #include <malloc.h> //包含了malloc函数 #include <stdlib.h> //包含了exit函数 struct Arr { int *pBase; //存储的是数组第一个元素的地址 int len; //数组所能容纳的最大元素的个数 int cnt; //当前数组有效元素的个数 }; void init_arr(struct Arr *pArr, int length); //分号不能省 int append_arr(struct Arr *pArr, int val); //追加 int insert_arr(struct Arr *pArr, int pos, int val); //POS的值从1开始 int delete_arr(struct Arr *pArr, int pos, int *pVal); int get(); int is_empty(struct Arr *pArr); int is_full(struct Arr *pArr); void show_arr(struct Arr *pArr); void inversion_arr(struct Arr *pArr); void sort_arr(struct Arr *pArr); int main(void) { struct Arr arr; int val; init_arr(&arr, 4); show_arr(&arr); append_arr(&arr, 1); append_arr(&arr, 2); append_arr(&arr, 3); append_arr(&arr, 4); // append_arr(&arr, 5); // append_arr(&arr, 6); // append_arr(&arr, 7); // append_arr(&arr, 8); // insert_arr(&arr, 3, 99); // if (delete_arr(&arr, 4, &val)) { // printf("--删除成功--\n"); // printf("--您删除的元素是: %d--\n", val); // } else { // printf("--删除失败--\n"); // } inversion_arr(&arr); printf("倒置"); show_arr(&arr); sort_arr(&arr); printf("排序"); show_arr(&arr); printf("haha"); return 0; } void init_arr(struct Arr *pArr, int length) { pArr->pBase = (int *) malloc(sizeof(int) * length); if (NULL == pArr->pBase) { printf("动态内存分配失败!\n"); exit(-1); //终止整个程序 } else { pArr->len = length; pArr->cnt = 0; } return; } int is_empty(struct Arr *pArr) { if (0 == pArr->cnt) return 1; else return 0; } int is_full(struct Arr *pArr) { if (pArr->cnt == pArr->len) return 1; else return 0; } void show_arr(struct Arr *pArr) { if (is_empty(pArr)) { printf("数组为空!\n"); } else { for (int i = 0; i < pArr->cnt; ++i) { printf("%d ", pArr->pBase[i]); printf("\n"); } } } int append_arr(struct Arr *pArr, int val) { if (is_full(pArr)) { return 0; } else { pArr->pBase[pArr->cnt] = val; (pArr->cnt)++; return 1; } } int insert_arr(struct Arr *pArr, int pos, int val) { int i; if (is_full(pArr)) { return 0; } if (pos < 1 || pos > pArr->cnt + 1) { return 0; } for (i = pArr->cnt - 1; i >= pos - 1; --i) { pArr->pBase[i + 1] = pArr->pBase[i]; } pArr->pBase[pos - 1] = val; pArr->cnt++; return 1; } int delete_arr(struct Arr *pArr, int pos, int *pVal) { if (is_empty(pArr)) return 0; if (pos < 1 || pos > pArr->cnt) return 0; *pVal = pArr->pBase[pos - 1]; for (int i = pos; i < pArr->cnt; ++i) { pArr->pBase[i - 1] = pArr->pBase[i]; } pArr->cnt--; return 1; } void inversion_arr(struct Arr *pArr) { int i = 0; int j = pArr->cnt - 1; int t; while (i < j) { t = pArr->pBase[i]; pArr->pBase[i] = pArr->pBase[j]; pArr->pBase[j] = t; ++i; --j; } } void sort_arr(struct Arr *pArr){ int i, j,t; for ( i = 0; i < pArr->cnt; ++i) { for ( j = i+1; j < pArr->cnt; ++j) { if (pArr->pBase[i] > pArr->pBase[j]){ t = pArr->pBase[i]; pArr->pBase[i] = pArr->pBase[j]; pArr->pBase[j] = t; } } } }
完