C代码实现数组
来源:互联网 发布:长春典恒网络百度贴吧 编辑:程序博客网 时间:2024/06/03 21:33
直接上代码,没有什么说的
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); 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=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)){ 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性喜剧
326影视
分类: 数据结构
0 0
- C代码实现数组
- C代码实现数组
- C代码实现数组
- 二叉树数组实现[C/C++]代码
- C/C++代码实现最大子数组
- 简化代码,C/C++函数指针数组实现菜单系统
- C语言 逆序一个数组的代码实现
- 【库】c实现数组
- 【库】c实现数组
- c实现数组归并
- C实现动态数组
- 算法:C实现 数组
- C队列 数组实现
- 数组C语言实现
- AES-C代码实现
- ARP C代码实现
- C代码实现栈
- factorial c代码实现
- (日志,《算法导论》.6.2)堆排序,代码
- iOS XIB以及Storyboard的部分使用方法
- 华为oj_找出字符串中第一个只出现一次的字符
- git error: unable to unlink old (Permission denied)
- 国外程序员推荐:每个程序员都应读的书
- C代码实现数组
- LeanCloud获取最近会话列表和获取最后一条聊天记录
- Incompatible pointer types returning 'NSArray *' from a function with result type 'xxx *'
- 编程书籍推荐_3
- 黑马程序员——String类及相关类
- WPF中使用ReportViewer报表
- git一般开发使用流程
- 如何在面试中面试官的提示下,积极地思考?
- 【动态域名解析工具】tunnel,国内版的ngrok,花生壳可以睡觉了