C代码实现数组
直接上代码,没有什么说的
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