#include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <stdbool.h> //简单数组存储 gcc下运行 //J.WANG 2013-6-8 typedef struct Arr{ int * data; //存储数组的第一个元素的地址 int len; //数组的存储长度 int index; //有效元素个数 } ARR; bool init(ARR *p,int n); //初始存储,p要初始对象的地址,n初始的长度 bool append(ARR *p,int val); //添加元素,p添加的对象,val要增加的值 void printArr(ARR *p); //打印数组 bool isFull(ARR *p); //数组是否有足够的空间 void reverse(ARR *p); //反转数组 bool delete(ARR *p,int val); //删除数组中第一个出现的指定元素 void sort(ARR *p); //排序 bool insert(ARR *p,int pos,int val); //插入数据 bool isEmpty(ARR *p); //判断数组是否为空 int main(){ ARR arr; init(&arr,12); //插入数据 append(&arr,32); append(&arr,22); append(&arr,1); append(&arr,-1); append(&arr,0); append(&arr,0); append(&arr,6); append(&arr,55); append(&arr,1011); append(&arr,23); append(&arr,88); append(&arr,22); //删除 delete(&arr,22); delete(&arr,22); delete(&arr,1); printf("-------输出数据----\n"); printArr(&arr); printf("-------反转数据----\n"); reverse(&arr); //反转 printArr(&arr); printf("-------排序后数据----\n"); sort(&arr); //排序 printArr(&arr); return 0; } //初始数组 bool init(ARR * p,int n){ if(0<n){ p->data=(int *)malloc(sizeof(int)*n); if(p->data==NULL){ printf("初始化失败.\n"); return false; }else{ p->index=0; p->len=n; return true; } } return false; } //判断数组是否已满 bool isFull(ARR *p){ if(isEmpty(p)){ printf("isFull数组为空.\n"); return false; } //有效元素个数大于等于数组长度,数组已满 if(p->len<=p->index) return true; else return false; } //增加 bool append(ARR * p,int val){ if(isFull(p)){ printf("append没有足够空间存储.%d\n",val); return false; } p->data[p->index] = val; p->index++; return true; } //打印 void printArr(ARR *p){ int i; for(i=0;i<p->len;i++){ printf("%d\n",p->data[i]); } printf("\n"); } //是否为空 bool isEmpty(ARR *p){ if(p==NULL||p->len==0) return true; else return false; } //插入数据 bool insert(ARR *p,int pos,int val){ int i; if(pos<1){ printf("insert无效的位置.\n"); return false; } if(isEmpty(p)){ return false; } if(p->len-1<p->index){ printf("insert没有足够的空间存储数据.\n"); return false; } //每个元素向后移1位 for(i=p->len-1;i>=pos;i--){ p->data[i]=p->data[i-1]; } //插入值 p->data[pos-1]=val; p->index++; return true; } //删除数组中第一个出现的指定的元素 bool delete(ARR *p,int val){ int i; if(isEmpty(p)){ printf("delete数组为空!\n"); return false; } //找到第一个出现的指定元素 for(i=0;i<p->len&&!(p->data[i]==val);i++); //标记: !的优先级比==高 //每个元素向前移动1位 for(;i<p->len-1;i++){ p->data[i]=p->data[i+1]; } p->index--; p->len--; return true; } //反转数组 void reverse(ARR *p){ if(isEmpty(p)){ printf("reverse数组为空!\n"); return; } int i=0,j=p->len-1,m=(p->len)/2,t; while(0 < m){ t=p->data[i]; p->data[i]=p->data[j]; p->data[j]=t; i++; j--; m--; } } //选择排序 void sort(ARR *p){ if(isEmpty(p)){ printf("sort数组为空!\n"); return; } int i,j,min,tmp; for(i=0;i<p->len;i++){ //遍历所有元素 min=i; for(j=i+1;j<p->len;j++){ //从所有元素里找出最小的元素下标 if(p->data[min]>p->data[j]){ min=j; } } if(min!=i){ tmp=p->data[i]; p->data[i]=p->data[min]; p->data[min]=tmp; } } }
相关推荐
Jupyter-Notebook
Jupyter-Notebook
高效甘特图模板下载-精心整理.zip
lstm Summary Framework: z = U>x, x u Uz Criteria for choosing U: • PCA: maximize projected variance • CCA: maximize projected correlation • FDA: maximize projected intraclass variance
OpenGL调试工具,适合图形开发者,包括视频开发,播放器开始以及游戏开发者。
全国行政区划shp最新图.zip
全国研究生招生与在校数据+国家线-最新.zip
Jupyter-Notebook
直播电商交流平台 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
《林黛玉进贾府》课本剧剧本
2000-2020年沪深A股上市公司融资约束程度SA指数-最新数据发布.zip
PPT模版资料,PPT模版资料
CPA注会考试最新教材资料-最新发布.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
内容概要:本文提供了一个完整的职工管理系统的C++源代码。通过面向对象的编程方法,实现了包括创建新职工、查询、增加、修改、删除、排序、统计以及存储和恢复职工数据在内的多个基本操作功能。该系统支持不同的用户角色(如管理员与老板),并通过菜单驱动方式让用户方便地进行相关操作。此外,还包括了错误检测机制,确保操作过程中的异常得到及时处理。 适合人群:有一定C++语言基础,特别是面向对象编程经验的程序员;企业管理人员和技术开发人员。 使用场景及目标:适用于中小型企业内部的人力资源管理部门或IT部门,用于维护员工基本信息数据库,提高工作效率。通过本项目的学习可以加深对链表、类和对象的理解。 阅读建议:建议先熟悉C++的基本语法和面向对象概念,再深入学习代码的具体实现细节。对于关键函数,比如exchange、creatilist等,应当重点关注并动手实践以加强理解。
Jupyter-Notebook
考研公共课历年真题集-最新发布.zip
Huawei-HKUST Joint Workshop on Theory for Future Wireless 15-16 September 2022 华为-香港科技大学未来无线理论联合研讨会 Speaker:Jingwen Tong
演出人员与观众疫情信息管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
《林黛玉进贾府》课本剧剧本.pdf