C代码实现数组

来源:互联网 发布:长春典恒网络百度贴吧 编辑:程序博客网 时间:2024/06/03 21:33

直接上代码,没有什么说的

复制代码
  1 # include <stdio.h>  2 # include <malloc.h>  3 # include <stdlib.h>  4   5 //用C实现数组  6   7 typedef struct Array{  8     int len;//数组的长度  9     int* pHead;//数组首地址 10     int cnt;//数组有效元素个数  11 }* PARR,ARR;  12  13 bool insert(PARR arr,int index,int num); 14 bool add(PARR arr,int num); 15 bool isEmpty(PARR arr); 16 void print(PARR arr); 17 void initArray(PARR arr,int len); 18 bool isFull(PARR arr); 19 bool deleteArr(PARR arr,int index); 20 void sort(PARR arr); 21  22 int main(void) 23 { 24     ARR arr; 25     initArray(&arr,5); 26     if(isEmpty(&arr)){ 27         printf("数组为空\n"); 28     } 29      30     add(&arr,111); 31     add(&arr,2); 32     add(&arr,33); 33     add(&arr,4); 34     add(&arr,5); 35 //    add(&arr,1); 36 //    add(&arr,1); 37     print(&arr); 38     sort(&arr); 39     deleteArr(&arr,3); 40     print(&arr); 41      42     return 0; 43 } 44  45 //初始化数组 46 void initArray(PARR arr,int length){ 47     //申请内存 48     arr->pHead = (int*)malloc(sizeof(int)*length); 49     if(NULL==arr->pHead){ 50         printf("申请内存失败"); 51         exit(-1); 52     } 53     arr->len = length; 54     arr->cnt = 0; 55 }  56   57 //遍历数组 58 void print(PARR arr){ 59     if(isEmpty(arr)){ 60         printf("数组为空"); 61     } 62     //for循环打印数组  63     for(int i=0; i<arr->cnt; i++){ 64         printf("%d ",arr->pHead[i]); 65     } 66     printf("\n"); 67      68 } 69   70 //判读数组是否为空 71 bool isEmpty(PARR arr){ 72     return arr->cnt==0; 73 } 74  75 //判断数组是否满 76 bool isFull(PARR arr){ 77     return arr->cnt==arr->len; 78 } 79  80 //往数组里添加元素 81 bool add(PARR arr,int num){ 82     if(isFull(arr)){ 83         printf("数组已满"); 84         return false; 85     } 86      87     arr->pHead[arr->cnt] = num; 88     arr->cnt++; 89     return true; 90 } 91  92 //向数组中插入元素  93 bool insert(PARR arr,int index,int num){ 94     if(isFull(arr)){ 95         return false; 96     } 97     if(index<1||index>arr->cnt+1){ 98         return false; 99     }100     101     //把index-1之后的数往后移动102     for(int i=arr->cnt-1; i>=index-1;i--){103         arr->pHead[i+1] = arr->pHead[i];104     }105     106     arr->pHead[index-1] = num;107     arr->cnt++;108     return true;109 }110 111 //删除指定位置的元素112 bool deleteArr(PARR arr,int index){113     if(isEmpty(arr)){114         return false;115     }116     if(index<1||index>arr->cnt+1){117         return false;118     }119     120     for(int i=index; i<arr->cnt;i++){121         arr->pHead[i-1] = arr->pHead[i];122     }123     arr->cnt--;124     return true;125 }126 127 //排序128 void sort(PARR arr){129      130      int i,j,tem;131     for(i=0;i<arr->cnt-1;i++) {132         for(j=0;j<arr->cnt-1-i;j++){133             if (arr->pHead[j]>arr->pHead[j+1]){134                 tem = arr->pHead[j];135                 arr->pHead[j] = arr->pHead[j+1];136                 arr->pHead[j+1] = tem;137             }138         }139     }140 } 141  
复制代码
性喜剧

 

326影视
分类: 数据结构
0 0
原创粉丝点击