标签:
2015-12-09 20:49:18
1 #include<stdio.h> 2 #include<malloc.h> 3 #include<stdlib.h>//exit() 4 5 struct Arr 6 { 7 int * pBase;//数组第一个元素的地址 8 int len;//长度 9 int cnt;//当前数组有效元素的个数 10 int increment;//自动增长因子 11 }; 12 13 void init_arr(struct Arr *pArr,int length); 14 bool append_arr(struct Arr *pArr,int val);//追加 15 bool insert_arr(struct Arr *pArr,int pos,int val);//pos从一开始 16 bool delete_arr(struct Arr *pArr,int pos,int *pVal); 17 get get_arr(); 18 bool is_empty(struct Arr*pArr); 19 bool is_full(struct Arr *pArr); 20 void sort_arr(struct Arr *pArr);//排序 21 void show_arr(struct Arr*pArr); 22 void inversion_arr(struct Arr*pArr);//倒置 23 24 25 26 int main () 27 { 28 29 struct Arr arr; 30 int val; 31 32 init_arr(&arr,6); 33 show_arr(&arr); 34 append_arr(&arr,1); 35 append_arr(&arr,2); 36 append_arr(&arr,3); 37 insert_arr(&arr,1,99); 38 delete_arr(&arr,2,&val)//val返回被删除的值 39 40 inversion_arr(&arr); 41 show_arr(&arr); 42 sort_arr(&arr); 43 show_arr(&arr); 44 45 retirn 0; 46 } 47 48 void init_arr(struct Arr *pArr,int length) 49 { 50 pArr->pBase = (int *)malloc(sizof(int)*length); 51 if (NULL==pArr->pBase) 52 { 53 printf("动态内存分配失败!\n"); 54 exit (-1);//终止整个程序 55 } 56 else 57 { 58 pArr->len=length; 59 pArr->cnt=0; 60 } 61 return; 62 } 63 64 65 bool is _empty(struct Arr*pArr) 66 { 67 if(0==pArr->cnt) 68 return true; 69 else 70 return false; 71 } 72 73 bool is_full(struct Arr *pArr) 74 { 75 if(pArr->cnt == pArr->len) 76 return true; 77 else 78 return false; 79 } 80 81 void show_arr(struct Arr*pArr) 82 { 83 if(is_empty(pArr)) 84 { 85 printf("The arr is Empty!\n"); 86 } 87 else 88 { 89 for(int i=0;i<pArr->cnt;++i) 90 printf("%d",pArr->pBase[i]); 91 printf("\n"); 92 } 93 } 94 95 bool append_arr(struct Arr *pArr,int val) 96 { 97 if(is_full(pArr)) 98 return false; 99 100 else 101 { 102 pArr->pBase[pArr->cnt]=val; 103 (pArr->cnt)++; 104 return true; 105 } 106 } 107 108 bool insert_arr(struct Arr *pArr,int pos,int val) 109 { 110 int i ; 111 112 if(is_full(pArr)) 113 return false; 114 115 if(pos<1||pos>pArr->cnt+1) 116 return false; 117 118 119 for(i=pArr->cnt-1;i>=pos-1;--i) 120 { 121 pArr->pBase[i+1]=pArr->pBase[i]; 122 } 123 pArr->pBase[pos-1]=val; 124 pArr->cnt++; 125 return true; 126 } 127 128 bool delete_arr(struct Arr *pArr,int pos,int *pVal) 129 { 130 int i; 131 132 if(is_empty(pArr)) 133 return false; 134 135 if(pos<1||pos>pArr->cnt) 136 return false; 137 138 *pVal=pArr->pBase[pos-1]; 139 140 for(i=pos;i<pArr->cnt;++i) 141 { 142 pArr->pBase[i-1]=pArr->pBase[i]) 143 } 144 145 pArr->cnt--; 146 return; 147 } 148 149 void inversion_arr(struct Arr*pArr) 150 { 151 int i =0; 152 int j = pArr->cnt-1; 153 int t; 154 155 while(i<j) 156 { 157 t=pArr->pBase[i]; 158 pArr->pBase[i]=pArr->pBase[j]; 159 pArr->pBase[j]=t; 160 ++i;--j; 161 } 162 return; 163 } 164 165 void sort_arr(struct Arr *pArr) 166 { 167 int i,j; 168 169 for(i=0;i<pArr->cnt;++i) 170 { 171 for(j=i+1;j<pArr->cnt;++j) 172 { 173 if(pArr->pBase[i] > pArr->pBase[j]) 174 { 175 t=pArr->pBase[i]; 176 pArr->pbase[i]=pArr->pBase[j]; 177 pArr->pBase[j]=t; 178 } 179 } 180 } 181 }
标签:
原文地址:http://www.cnblogs.com/dangnianhefeng/p/5034203.html