码迷,mamicode.com
首页 > 编程语言 > 详细

线性结构——连续存储【数组】的建立与实现

时间:2015-12-09 21:26:50      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!