您的位置:首页 > 编程语言

C代码实现数组

2015-10-06 10:25 169 查看
直接上代码,没有什么说的

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);黄色别墅http://www.326dy.com/

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=<span 性喜剧http://www.326ys.com/
style="margin: 0px; padding: 0px; color: rgb(128, 0, 128); line-height: 1.5 !important;">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)){326影视http://www.326ys.com/
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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: