连续存储数组数组的算法演示

来源:互联网 发布:淘宝自动发货软件源码 编辑:程序博客网 时间:2024/05/21 13:22

连续存储数组数组的算法演示



#include <stdio.h>#include <malloc.h>#include <stdlib.h>//定义了一个数据类型,该数据类型的名字叫 struct Arrstruct Arr{   int * pBase;//存储的是数组第一个元素的地址    int len;//数组所能容纳的最大元素的个数    int cnt;//当前数组有效元素的个数 };void init_arr(struct Arr *,int);//数组初始化 bool append_arr(struct Arr *,int); //追加 bool insert_arr(struct Arr *,int,int);//插入一个数 bool delete_arr(struct Arr *,int,int*);//删除一个数 bool is_empty(struct Arr *);//判断数组是否为空 bool is_full(struct Arr *);//判断数组是否为满 void sort_arr(struct Arr *);//对数组进行排序 void show_arr(struct Arr *);//显示数组 void inversion_arr(struct Arr *);//倒置数组 int main(){struct Arr arr;int val; init_arr(&arr,6);show_arr(&arr);append_arr(&arr,1);append_arr(&arr,2);append_arr(&arr,3);append_arr(&arr,4);append_arr(&arr,5);insert_arr(&arr,1,0);if(delete_arr(&arr,1,&val)){printf("删除成功!\n");    printf("您删除的元素是:%d\n",val);}else{printf("删除失败!\n");}show_arr(&arr);inversion_arr(&arr);show_arr(&arr);sort_arr(&arr);show_arr(&arr);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;}else{return false;}}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");}}bool is_full(struct Arr *pArr){if(pArr->cnt==pArr->len){return true;}else{return false;}}bool append_arr(struct Arr *pArr,int val){if(is_full(pArr)){return false;//满返回false }else{    pArr->pBase[pArr->cnt]=val;    (pArr->cnt)++;return true; }}//pos的值从1开始 bool insert_arr(struct Arr *pArr,int pos,int val){int i;if(is_full(pArr)){return false;}if(pos<1||pos>pArr->cnt+1){return false; }for(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-1;i<pArr->cnt;i++){pArr->pBase[i]=pArr->pBase[i+1];}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 t=0;int i,j;for(i=0;i<pArr->cnt;i++){for(j=0;j<pArr->cnt-i;j++){if(pArr->pBase[j]>pArr->pBase[j+1]){t=pArr->pBase[j];pArr->pBase[j]=pArr->pBase[j+1];pArr->pBase[j+1]=t;}}}} 


0 0
原创粉丝点击