c语言数组的操作

1 #include 2 #include 3 #include//exit() 4 5 6 struct Arr//定义了一个数据类型,数据类型名字Arr 7 { 8 9int *pbase; //基地址指针 10int lenth; //数组长度 11int cent; //数组实际大小 12//int increment; //增战因子 13 }; 14 void init_arr(struct Arr *array, int lenth); 15 bool append_arr(struct Arr *array,int data); 16 bool delete_arr(struct Arr *array,int pos); 17 bool insert_arr(struct Arr *array,int data,int pos); //插入 18 void show_arr(struct Arr *array); 19 bool is_empty(struct Arr *array); 20 bool is_full(struct Arr *array); 21 int get(); 22 bool inversion(struct Arr *array); 23 void sort_bubble(struct Arr *array); //冒泡 24 void sort_insert(struct Arr *array); //插入排序 25 26 27 int main() 28 { 29struct Arr arr; 30init_arr(&arr,6); 31printf("%d\n",arr.cent); 32show_arr(&arr); 33if(append_arr(&arr,45)&&append_arr(&arr,4)&&append_arr(&arr,5)&&append_arr(&arr,1245)&&printf("%d\n",arr.cent)) 34{ 35printf("插入成功\n"); 36} 37 38show_arr(&arr); 39insert_arr(&arr,99,1); 40show_arr(&arr); 41delete_arr(&arr,3); 42show_arr(&arr); 43inversion(&arr); 44show_arr(&arr); 45sort_bubble(&arr); 46show_arr(&arr); 47sort_insert(&arr); 48show_arr(&arr); 49return 0; 50 } 51 52 void init_arr(struct Arr *array,int lenth)//初始化 53 { 54array->lenth=99; 55array->pbase=(int *)malloc(sizeof(int)*lenth); 56if(NULL==array->pbase) 57{ 58printf("动态内存分配失败\n"); 59exit(-1); 60} 61else 62{ 63array->lenth=lenth; 64array->cent=0; 65} 66 } 67 68 void show_arr(struct Arr *array)//展示数组 69 { 70if(is_empty(array)) 71{ 72printf("数组为空\n"); 73} 74else 75{ 76int i; 77for(i=0; icent; i++) 78{ 79printf("%d ",array->pbase[i]); 80} 81printf("\n"); 82} 83 } 84 85 bool is_empty(struct Arr *array)//判断是否为空 86 { 87if(array->cent==0) 88return true; 89else 90return false; 91 } 92 93 bool append_arr(struct Arr *array,int data)//在后面插入 94 { 95if(is_full(array)) 96return false; 97else 98{ 99array->pbase[array->cent++]=data; 100} 101return true; 102 } 103 104 bool is_full(struct Arr *array)//判断是否满 105 { 106if(array->cent==array->lenth) 107return true; 108else 109return false; 110 } 111 112 bool insert_arr(struct Arr *array,int data,int pos)//数组中插入 113 { 114if(pos>0&&pos<=array->cent) 115{ 116if(is_full(array)) 117{ 118printf("数组已满,无法插入\n"); 119return false; 120} 121else 122{ 123for(int i=array->cent; i>=pos; i--) 124array->pbase[i] = array->pbase[i-1]; 125array->pbase[pos-1]=data; 126array->cent++; 127return true; 128} 129} 130else 131{ 132printf("pos越界\n"); 133return false; 134} 135 136 } 137 138 bool delete_arr(struct Arr *array,int pos)//删除摸个位置上的元素 139 { 140if(is_empty(array)) 141{ 142printf("数组为空\n"); 143return false; 144} 145if(pos>0&&poscent) 146{ 147int vol=array->pbase[pos-1]; 148for(int i=pos; icent; i++) 149{ 150array->pbase[i-1]=array->pbase[i]; 151} 152array->cent--; 153printf("数据已删除\n"); 154printf("删除的数据:%d\n",vol); 155return true; 156} 157else 158{ 159printf("pos越界\n"); 160return false; 161} 162 163 } 164 165 bool inversion(struct Arr *array)//数组反转 166 { 167int i,t,l; 168/*l=array->cent/2; 169for(i=0; ipbase[i]!=array->pbase[array->cent-1-i]) 172{ 173t=array->pbase[i]; 174array->pbase[i]=array->pbase[array->cent-1-i]; 175array->pbase[array->cent-1-i]=t; 176} 177}*/ 178l=array->cent-1; 179i=0; 180while(ipbase[i]!=array->pbase[l]) 183{ 184t=array->pbase[i]; 185array->pbase[i]=array->pbase[l]; 186array->pbase[l]=t; 187} 188i++; 189l--; 190} 191return true; 192 } 193 194 void sort_bubble(struct Arr *array) 195 { 196int i,j,l,t; 197l=array->cent; 198for(i=0; ipbase[i]>array->pbase[j]) 202{ 203t=array->pbase[i]; 204array->pbase[i]=array->pbase[j]; 205array->pbase[j]=t; 206} 207} 208 } 209 210 void sort_insert(struct Arr *array) 211 { 212int i,j,l,t; 213l=array->cent; 214for(i=1; i=0; j--) 216{ 217t=array->pbase[i]; 218if(array->pbase[i]pbase[j]) 219{ 220for(int p=i; p>j; p--) 221array->pbase[p] = array->pbase[p-1]; 222array->pbase[j]=t; 223} 224} 225 }


【c语言数组的操作】转载于:https://www.cnblogs.com/weilq/p/3437680.html

    推荐阅读