数据结构之数组
来源:互联网 发布:单片机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
- 数据结构之后缀数组
- 数据结构之树状数组
- 数据结构之后缀数组
- 数据结构之树状数组
- 数据结构之树状数组
- 数据结构之数组
- 数据结构之树状数组
- 数据结构之数组
- 数据结构之树状数组
- 数据结构之数组
- 数据结构之数组
- 数据结构之数组实现
- 【数据结构之树状数组】
- 数据结构之树状数组
- 数据结构之树状数组
- 数据结构之后缀数组
- 数据结构之树状数组
- 数据结构之后缀数组
- 如何销毁Activity,和如何一次销毁多个activity
- umeng用户反馈报错NoClassDefFoundError
- iOS 键盘类型设置
- maven 搭建私服
- Linux内核调拭之printk用法
- 数据结构之数组
- linux服务器下磁盘IO瓶颈测试
- Android 内存管理之道
- 如何在代码中为组件设置dip,sp值
- 浅谈HTTP中Get与Post的区别
- 数据结构(二):栈
- ubuntu 14.04设置默认关闭蓝牙
- Myeclipse 向 Eclipse 中导入web项目报错,不识别
- js刷新页面方法大全