数据结构之数组

来源:互联网 发布:单片机swap是什么意思 编辑:程序博客网 时间:2024/06/06 05:40

数据结构是专门研究数据存储的问题 。数据的存储包括两方面 个体的存储+个体关系的存储。算法是对存储数据的操作。
 线性
 连续存储【数组】
 优点
          存取速度很快
 缺点
          插入删除元素很慢   事先必须知道数组的长度   需要大块连续的内存块

数组的相关操作:

1 .数组的定义

//定义一个数组struct Array{int *parr;//指向数组的指针int len;//数组所能容纳的最大元素的个数int cnt;//数组的有效元素的个数};

2.数组的创建

//初始化数组void Init_array(struct Array *pArr, int length){pArr->parr=(int *)malloc(sizeof(int)*length);if (NULL==pArr->parr){printf("内存分配失败");exit(-1);//终止程序}else{pArr->cnt=0;pArr->len=length;}return;//加return的目的是表明此函数已经写完了  }

3.打印输出

//将数组元素打印输出void Show_array(struct Array *pArr){    if (Isempty(pArr))    {printf("数组为空!\n");    }else{for (int i=0; i<pArr->cnt; ++i){printf("%d ",pArr->parr[i]);}printf("\n");}}

4.判断数组是否为空

//判断数组是否为空bool Isempty(struct Array *pArr){if (0==pArr->cnt){return true;}else{return false;}}

5.判断数组是否为满

//判断数组是否为满bool Isfull(struct Array *pArr){if (pArr->cnt==pArr->len){return true;}else{return false;}}

6.在数组后面追加元素

//在数组后面追加元素void add_array(struct Array *pArr, int val){if (Isfull(pArr)){printf("数组已满,无法追加元素!\n");}else{pArr->parr[pArr->cnt]=val;pArr->cnt++;}return;}

7.在数组的指定位置添加元素

//在数组的指定位置添加元素(pos=1,2,3,4.......,pos最大为数组中有效元素的个数)bool Insert_array(struct Array *pArr,int pos, int val){if (Isfull(pArr)||pos>pArr->cnt||pos<1){return false;}else{for(int i=pArr->cnt-1; i>=pos-1; i--){pArr->parr[i+1]=pArr->parr[i];}pArr->parr[pos-1]=val;pArr->cnt++;return true;}}

8.在数组的指定位置删除元素

//在数组的指定位置删除元素(pos=1,2,3,4.......,pos最大为数组中有效元素的个数)bool Delete_array(struct Array *pArr,int pos){if(Isempty(pArr)||pos>pArr->cnt||pos<1){return false;}else{for (int i=pos; i<pArr->cnt; i++){pArr->parr[i-1]=pArr->parr[i];}pArr->cnt--;return true;}

9.数组元素的倒置

//倒置数组中的元素void Inverse_array(struct Array *pArr){int i,j,temp;if (Isempty(pArr)){return;}for (i=0,j=pArr->cnt-1;i<j;i++,j--){temp=pArr->parr[i];pArr->parr[i]=pArr->parr[j];pArr->parr[j]=temp;}}

10.数组元素的排序

//选择排序void Selectsort_array(struct Array *pArr){int i,j,min,t;for (i=0; i<pArr->cnt-1; i++){min=i;for (j=i+1; j<pArr->cnt; j++){if (pArr->parr[j]<pArr->parr[min]){min=j;}}t=pArr->parr[i];pArr->parr[i]=pArr->parr[min];pArr->parr[min]=t;}}//冒泡排序void BubbleSort_array(struct Array *pArr){int i,j,temp;for (i=0; i<pArr->cnt-1; i++){for (j=0; j<pArr->cnt-1-i; j++){if (pArr->parr[j+1]<pArr->parr[j]){temp=pArr->parr[j];pArr->parr[j]=pArr->parr[j+1];pArr->parr[j+1]=temp;}}}}

10.运行结果




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 奖虫账号和密码不匹配怎么办 开淘宝店余额宝里的钱怎么办 京东找不到所有宝贝的链接了怎么办 淘宝店链接改了标题没流量怎么办 淘宝手淘搜索自然流量少怎么办 4个月宝贝不食欲下降怎么办 淘宝商家预售时间到了不发货怎么办 淘宝修改类目被处置管控了怎么办 淘宝换手机号是已经注册了的怎么办 闲鱼违规把我淘宝店铺冻结了怎么办 开网店店主想买自己的东西怎么办 以前用微博登录头条的账号怎么办 公众号注册提示邮箱已被占用怎么办 学信网注册时出现邮箱被占用怎么办 手机淘宝店铺接不到买家消息怎么办 买了东西淘宝店铺没了怎么办 淘宝店铺直播间虚假交易违规怎么办 手机淘宝退款物流单号填错了怎么办 淘宝评价删除了卖家没有返现怎么办 想摆摊卖麻辣烫不知怎么摆怎么办 在淘宝卖东西买家退款不退货怎么办 在闲鱼网上买东西被骗了怎么办 开通花呗的手机号不用了怎么办 饿了么开业第一天没单量怎么办 淘宝新开店铺没有人来呀怎么办 刚开的淘宝店铺没有人买东西怎么办 开了一家龙虾店生意很淡怎么办? 新买的皮质小白鞋有点板脚怎么办 手机无效安装包与系统不兼容怎么办 发好的海参放进速冻后变小了怎么办 厨房地砖下面的下水管漏水怎么办? 埋在地下的暖气管漏水怎么办 安装个视频播放器视频全没了怎么办 奇迹mu圣导转职任务打不过怎么办 丈夫死后房产证过给妻子怎么办 学业与志愿活动冲突时你会怎么办 往宅正门前面有半园幕墙玻璃怎么办 模拟城市5石油抽干了怎么办 一户一宅我父亲没有宅基怎么办? 在日本坐新干线期间车票丢了怎么办 街电共享充电宝丢了怎么办