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