数据结构---数组【连续存储】

来源:互联网 发布:矩阵制 编辑:程序博客网 时间:2024/05/16 12:47
<span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">#include<stdio.h></span>
<span style="font-size:18px;">#include<stdlib.h>#include<malloc.h>struct Arr{    int *pBase;    int len;    int cnt;   };void init_arr(struct Arr *pArr,int length);bool is_empty(struct Arr *pArr);void show_arr(struct Arr *pArr);bool is_full(struct Arr * pArr);bool append_arr(struct Arr * pArr,int val);bool insert_arr(struct Arr * pArr,int pos,int val);bool delete_arr(struct Arr * pArr,int pos,int * pVal);void inversion_arr(struct Arr * pArr);void sort_arr(struct Arr * pArr);int main(void){int val;    struct Arr arr;    init_arr(&arr,6);    show_arr(&arr);    append_arr(&arr,4);    append_arr(&arr,1);    append_arr(&arr,9);    append_arr(&arr,5);    show_arr(&arr);    insert_arr(&arr,1,8);    show_arr(&arr);    if(delete_arr(&arr,1,&val))    {printf("删除成功!\n");printf("删除的元素为:%d\n",val);}else{printf("删除失败!");}inversion_arr(&arr);show_arr(&arr);sort_arr(&arr);show_arr(&arr);    system("pause");      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 ;     }bool is_empty(struct Arr *pArr){if(0 == pArr->cnt)return true;elsereturn false;}void show_arr(struct Arr *pArr){if(is_empty(pArr)){printf("数组为空!\n"); }else{printf("数组为:") ;for(int i=0;i<pArr->cnt;++i)printf("%d ",pArr->pBase[i]);printf("\n");} }bool is_full(struct Arr * pArr){if(pArr->len == pArr->cnt)return true;elsereturn false;}bool append_arr(struct Arr * pArr,int val){if(is_full(pArr))return false;pArr->pBase[pArr->cnt] = val;(pArr->cnt)++;return true;}bool insert_arr(struct Arr * pArr,int pos,int val){if(is_full(pArr))return false;if(pos<1 || pos >pArr->cnt+1)return false;for(int i=pArr->cnt-1;i>=pos-1;--i){pArr->pBase[i+1] = pArr->pBase[i];}pArr->pBase[pos-1] = val;(pArr->cnt)++;return true;}bool delete_arr(struct Arr * pArr,int pos,int * pVal){if(is_empty(pArr))return false;if(pos<1 || pos > pArr->cnt)return false;*pVal = pArr->pBase[pos-1];for(int i=pos;i<pArr->cnt;++i){pArr->pBase[i-1] = pArr->pBase[i];}(pArr->cnt)--;return true;}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;}return;}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;}}}}</span>

0 0
原创粉丝点击