版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*线性结构,线性表的顺序表示和实现*/# include <stdio.h># include <malloc.h># include <stdlib.h> /包含了exit()函数 /定义一个数组结构体 struct Arr int * pBase; /保存数组的指针 int len; /保存数组的长度 int cnt; /数组元素的有效个数; /前置函数声明void init_arr(struct Arr * pArr,int length); /初始化bool append_arr(struct Arr * pArr,int val); /追加一个元
2、素bool insert_arr(struct Arr * pArr, int pos, int val); /插入一个元素bool delete_arr(struct Arr * pArr, int pos, int * val); /删除数组中的一个元素int get(struct Arr * pArr, int pos); /获取某个元素的值bool is_empty(struct Arr * pArr); /判断数组是否为空bool is_full(struct Arr * pArr); /判断数组是否已满void sort_arr(struct Arr * pArr); /为数组进行
3、从小到大排序void show_arr(struct Arr * pArr); /显示数组内容void inversion_arr(struct Arr * pArr); /反转数组中的所有值 /* 创建一个数组,实现对这个数组的操作 1,追加一个元素 2,插入一个元素 3,对数组排序 4,反转数组元素*/int main(void) /定义一个结构体变量 struct Arr array; /获取一个被删除的元素的值 int val; /使用函数init_arr()初始化数组 init_arr(&array, 5); /追加一个元素 append_arr(&array, 5)
4、; append_arr(&array, 3); append_arr(&array, 7); append_arr(&array, 1); printf("初始化的数组为:n"); show_arr(&array); /使用函数insert_arr()插入一个元素 printf("在第三个元素前插入一个数值99:n"); insert_arr(&array, 3, 99); /在第三个元素前,插入一个元素 show_arr(&array); /使用函数inversion_arr()对数组中的元素进行翻转
5、printf("反转数组中的所有值:n"); inversion_arr(&array); show_arr(&array); /使用函数sort_arr()对数组进行排序 printf("将数组进行排序:n"); sort_arr(&array); show_arr(&array); /使用函数delete_arr()删除一个元素 printf("删除数组中第三个元素:n"); delete_arr(&array, 3, &val); show_arr(&array); /使用
6、函数append_arr()追加一个元素 printf("在数组的最后追加一个数值50:n"); append_arr(&array,50); show_arr(&array); /使用函数get()获得一个元素 printf("得到数组中第三个元素:n%dn",get(&array,3); return 0; /* 初始化数组 param struct Arr * pArr 结构体变量指针 param int length 定义数组的长度 return void*/void init_arr(struct Arr * pArr,
7、int length) pArr->pBase = (int *)malloc(sizeof(int) * length); /判断动态内存是否创建成功 if( NULL = pArr->pBase) printf("动态内存常见失败n"); exit(-1); /为其他元素赋值 pArr->len = length; pArr->cnt = 0; return; /标识此函数结束 /* 将数组展示出来 param struct Arr * pArr 结构体变量指针 return void*/void show_arr(struct Arr * pA
8、rr) int i; /首先判断这个数组是否有有效值 if( is_empty(pArr) ) printf("这个数组为空n"); exit(-1); else for(i = 0; i < pArr->cnt; +i) printf("%d ", pArr->pBasei); printf("n"); /* 判断数组是否为空数组 param struct Arr * pArr 结构体变量指针 return Boolean*/bool is_empty(struct Arr * pArr) if( 0 = pArr
9、->cnt ) return true; else return false; /* 追加一个元素 param struct Arr * pArr 结构体变量指针 param int val 追加的元素的值 return Boolean*/bool append_arr(struct Arr * pArr, int val) if(is_full(pArr) printf("该数组已满n"); return false; pArr->pBasepArr->cnt = val; pArr->cnt+; return true; /* 判断数组是否已经爆
10、满 param struct Arr * pArr 结构体变量指针 return Boolean*/bool is_full(struct Arr * pArr) if( pArr->len = pArr->cnt) return true; else return false; /* 在数组中间插入一个元素 param struct Arr * pArr 结构体变量指针 param int pos 要插入元素的位置,不是下标 param int val 要插入元素的值 return Boolean*/bool insert_arr(struct Arr * pArr, int p
11、os, int val) int i; if( is_full(pArr) ) printf("数组已满,无法插入n"); return false; for( i = pArr->cnt-1; i >= pos-1; -i ) pArr->pBasei+1 = pArr->pBasei; pArr->pBasepos-1 = val; pArr->cnt+; return true; /* 删除数组中的一个元素 param struct Arr * pArr 结构体变量指针 param int pos 要删除的元素的位置,不是下标 pa
12、ram int * val 已删除元素的值 return Boolean*/bool delete_arr(struct Arr * pArr, int pos, int * val) int i; /判断数组是否为空,如果为空,就不用后续操作了 if( is_empty(pArr) ) printf("该数组为空,不能删除某值n"); return false; /判断传入的pos是否合法 if(pos < 1 | pos > pArr->cnt) printf("需要删除的元素不存在n"); return false; /获取到要删
13、除的元素值 *val = pArr->pBasepos-1; for(i = pos; i < pArr->cnt; +i) pArr->pBasei-1 = pArr->pBasei; pArr->cnt-; return false; /* 为数组进行从小到大排序 param struct Arr * pArr 结构体变量指针 return void*/void sort_arr(struct Arr * pArr) /排序的方式很多,我也不知道这个方法叫什么名字 int i, j, t; for( i = 0; i < pArr->cnt;
14、 +i) for(j = i+1; j < pArr->cnt; +j) if(pArr->pBasei > pArr->pBasej) t = pArr->pBasei; pArr->pBasei = pArr->pBasej; pArr->pBasej = t; /* 为数组进行从小到大排序 param struct Arr * pArr 结构体变量指针 return void*/void inversion_arr(struct Arr * pArr) int i = 0; int j = pArr->cnt-1; int t; while(i < j) t = pArr->pBasei; pArr->pBasei = pArr->pBasej; pArr->pBasej = t; i+; j-; /* 获取一个数组元素的值 param struct Arr * pArr 结构体变量指针 param int pos 要获取的元素位置 return int val 所需要的值 */int get(struct Arr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨领域学习在提高综合职业素养中的作用研究
- 混合式学习模式下学生自主学习的培养策略
- 2025年冀教版八年级历史上册月考试卷含答案
- 2025年人教新起点选修6历史下册月考试卷
- 二零二五年度健康医疗合同中的患者隐私保护与责任承担4篇
- 二零二五年度模具钢材市场分析与风险评估合同4篇
- 二零二五年度猕猴桃树种子知识产权保护及商业化应用合同4篇
- 二零二五年度煤炭运输合同环境风险防范范本4篇
- 二零二五年度泥工贴砖工程设计与施工总承包合同4篇
- 2025年度欧盟电子商务政策实施细则合同4篇
- 2025水利云播五大员考试题库(含答案)
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版)解读
- 中药饮片验收培训
- 手术室专科护士工作总结汇报
- DB34T 1831-2013 油菜收获与秸秆粉碎机械化联合作业技术规范
- 苏州市2025届高三期初阳光调研(零模)政治试卷(含答案)
- 创伤处理理论知识考核试题及答案
- (正式版)HG∕T 21633-2024 玻璃钢管和管件选用规定
- 《义务教育数学课程标准(2022年版)》测试题+答案
- 残疾军人新退休政策
- 白酒代理合同范本
评论
0/150
提交评论