连续存储数组的算法演示

来源:互联网 发布:帝国cms官网 编辑:程序博客网 时间:2024/05/17 02:15
# include <stdio.h># include <stdlib.h>struct Arr{int *pBase;//数组首元素地址int cnt;//当前数组有效元素个数int len;//数组所能容纳的最大元素个数};void init_arr(struct Arr * pArr, int length);void show_arr(struct Arr * pArr);int is_empty(struct Arr * pArr);int append_arr(struct Arr * pArr, int val);int is_full(struct Arr * pArr);int insert_arr(struct Arr * pArr, int pos, int val);void inversion_arr(struct Arr * pArr);void sort_arr(struct Arr * pArr);int delete_arr(struct Arr * pArr, int pos, int * pval);int main(void){struct Arr arr;int val;init_arr(&arr, 6);append_arr(&arr, 4);append_arr(&arr, 23);append_arr(&arr, 32);append_arr(&arr, 89);show_arr(&arr);inversion_arr(&arr);show_arr(&arr);insert_arr(&arr, 3, 57);show_arr(&arr);sort_arr(&arr);show_arr(&arr);delete_arr(&arr, 3, &val);printf("the number you have deleted is: %4d\n", val);show_arr(&arr);return 0;}void init_arr(struct Arr * pArr, int length){pArr->pBase = (int *)malloc(sizeof(int) * 6);if (NULL == pArr->pBase){printf("fail to get memory!\n");exit(-1);//终止整个程序}else{pArr->len = length;pArr->cnt = 0;}return; }void show_arr(struct Arr * pArr){if (is_empty(pArr)){printf("数组为空!\n");}else{int i;for (i = 0; i < pArr->cnt; i++)printf("%d\t", pArr->pBase[i]);printf("\n");}}int is_empty(struct Arr * pArr){if (0 == pArr->cnt)return 1;elsereturn 0;}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 is_full(struct Arr * pArr){if (pArr->cnt == pArr->len)return 1;elsereturn 0;}int insert_arr(struct Arr * pArr, int pos, int val){if (is_full(pArr))return 0;if (pos > 1 || pos <= pArr->cnt){int i;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;}else{return 0;}}void inversion_arr(struct Arr * pArr){int i, j;int t;i = 0;j = pArr->cnt - 1;for (; i < j; i++, j--){t = pArr->pBase[i];pArr->pBase[i] = pArr->pBase[j]; pArr->pBase[j] = t;}return; }void sort_arr(struct Arr * pArr){int i;int j;int 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;}}}return; }int delete_arr(struct Arr * pArr, int pos, int * pval){int i;if (pos <= 0 || pos > pArr->cnt)return 0;if (is_empty(pArr))return 0;*pval = pArr->pBase[pos - 1];for (i = pos; i <= pArr->cnt - 1; i++){pArr->pBase[i-1] = pArr->pBase[i];}pArr->cnt--; return 1;}
刚刚开始学习数据结构,今天下午看完一集郝斌的视频,晚上自己试着写了写,有成就感啊。
原创粉丝点击