c语言数组的操作
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>//exit() struct Arr//定义了一个数据类型,数据类型名字Arr
{ int *pbase;//基地址指针
int lenth;//数组长度
int cent;//数组实际大小
//int increment;//增战因子
};
void init_arr(struct Arr *array, int lenth);
bool append_arr(struct Arr *array,int data);
bool delete_arr(struct Arr *array,int pos);
bool insert_arr(struct Arr *array,int data,int pos);//插入
void show_arr(struct Arr *array);
bool is_empty(struct Arr *array);
bool is_full(struct Arr *array);
int get();
bool inversion(struct Arr *array);
void sort_bubble(struct Arr *array);//冒泡
void sort_insert(struct Arr *array);//插入排序 int main()
{
struct Arr arr;
init_arr(&arr,);
printf("%d\n",arr.cent);
show_arr(&arr);
if(append_arr(&arr,)&&append_arr(&arr,)&&append_arr(&arr,)&&append_arr(&arr,)&& printf("%d\n",arr.cent))
{
printf("插入成功\n");
} show_arr(&arr);
insert_arr(&arr,,);
show_arr(&arr);
delete_arr(&arr,);
show_arr(&arr);
inversion(&arr);
show_arr(&arr);
sort_bubble(&arr);
show_arr(&arr);
sort_insert(&arr);
show_arr(&arr);
return ;
} void init_arr(struct Arr *array,int lenth)//初始化
{
array->lenth=;
array->pbase=(int *)malloc(sizeof(int)*lenth);
if(NULL==array->pbase)
{
printf("动态内存分配失败\n");
exit(-);
}
else
{
array->lenth=lenth;
array->cent=;
}
} void show_arr(struct Arr *array)//展示数组
{
if(is_empty(array))
{
printf("数组为空\n");
}
else
{
int i;
for(i=;i<array->cent;i++)
{
printf("%d ",array->pbase[i]);
}
printf("\n");
}
} bool is_empty(struct Arr *array)//判断是否为空
{
if(array->cent==)
return true;
else
return false;
} bool append_arr(struct Arr *array,int data)//在后面插入
{
if(is_full(array))
return false;
else
{
array->pbase[array->cent++]=data;
}
return true;
} bool is_full(struct Arr *array)//判断是否满
{
if(array->cent==array->lenth)
return true;
else
return false;
} bool insert_arr(struct Arr *array,int data,int pos)//数组中插入
{
if(pos>&&pos<=array->cent)
{
if(is_full(array))
{
printf("数组已满,无法插入\n");
return false;
}
else
{
for(int i=array->cent;i>=pos;i--)
array->pbase[i] = array->pbase[i-];
array->pbase[pos-]=data;
array->cent++;
return true;
}
}
else
{
printf("pos越界\n");
return false;
} } bool delete_arr(struct Arr *array,int pos)//删除摸个位置上的元素
{
if(is_empty(array))
{
printf("数组为空\n");
return false;
}
if(pos>&&pos<array->cent)
{
int vol=array->pbase[pos-];
for(int i=pos;i<array->cent;i++)
{
array->pbase[i-]=array->pbase[i];
}
array->cent--;
printf("数据已删除\n");
printf("删除的数据:%d\n",vol);
return true;
}
else
{
printf("pos越界\n");
return false;
} } bool inversion(struct Arr *array)//数组反转
{
int i,t,l;
/*l=array->cent/2;
for(i=0;i<l;i++)
{
if(array->pbase[i]!=array->pbase[array->cent-1-i])
{
t=array->pbase[i];
array->pbase[i]=array->pbase[array->cent-1-i];
array->pbase[array->cent-1-i]=t;
}
}*/
l=array->cent-;
i=;
while(i<l)
{
if(array->pbase[i]!=array->pbase[l])
{
t=array->pbase[i];
array->pbase[i]=array->pbase[l];
array->pbase[l]=t;
}
i++;
l--;
}
return true;
} void sort_bubble(struct Arr *array)
{
int i,j,l,t;
l=array->cent;
for(i=;i<l-;i++)
for(j=i+;j<l;j++)
{
if(array->pbase[i]>array->pbase[j])
{
t=array->pbase[i];
array->pbase[i]=array->pbase[j];
array->pbase[j]=t;
}
}
} void sort_insert(struct Arr *array)
{
int i,j,l,t;
l=array->cent;
for(i=;i<l;i++)
for(j=i-;j>=;j--)
{
t=array->pbase[i];
if(array->pbase[i]<array->pbase[j])
{
for(int p=i;p>j;p--)
array->pbase[p] = array->pbase[p-];
array->pbase[j]=t;
}
}
}
c语言数组的操作的更多相关文章
- Java 语言基础之数组常见操作
对数组操作最基本的动作: 存和取 核心思想: 就是对角标的操作 数组常见操作: 1, 遍历 2, 获取最大值和最小值 3, 排序 4, 查找 5, 折半查找 // 1. 遍历 int[] arr = ...
- JavaScript jQuery 中定义数组与操作及jquery数组操作
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- C++语言-06-文件操作
C语言文件操作 C++语言是C语言的超集,是在C语言的基础上增加了面向对象的特性而创造出来的,最初被命名为带类的C.所以C++语言中包含了C语言的思想,如:C++语言中文件操作的原理与步骤与C语言基本 ...
- GO语言数组和切片实例详解
本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...
- swift语言之多线程操作和操作队列(下)———坚持51天吃掉大象(写技术文章)
欢迎有兴趣的朋友,参与我的美女同事发起的活动<51天吃掉大象>,该美女真的很疯狂,希望和大家一起坚持51天做一件事情,我加入这个队伍,希望坚持51天每天写一篇技术文章.关注她的微信公众号: ...
- js对数组的操作函数
js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手, ...
- PHP数组的操作
一.数组操作的基本函数数组的键名和值array_values($arr);获得数组的值array_keys($arr);获得数组的键名array_flip($arr);数组中的值与键名互换(如果有重复 ...
- js数组的操作及数组与字符串的相互转化
数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/ ...
随机推荐
- localtunnel.me 原理流程浅析
本文採用知识共享署名-同样方式共享 4.0 国际许可协议进行许可. 近期公司的项目须要一个后台server,要求能将内网的WEBserver暴露在外网上.于是.就在网上到处搜开源项目.找到两个口碑 ...
- java程序查不出数据来
同样的错误,不可再犯第三次!!! 数据库中是char,里面带空格,但在pl/sql中这样写可以查出来.如下: select ipostid from product t where ipostid= ...
- css float引发的塌陷问题及解决方案
如果父元素高度自适应,而且子元素有设置float left/right, 那么此时父元素的高度不会随子元素而变,如果父元素不包含任何的可见背景,这个问题会很难被注意到,但是这是一个很重要的问题. ht ...
- 原创 Reflector 8.1 反激活
今天下载了Reflector8.1,注册时不小心给注册成标准版了.郁闷,然后想反注册,结果人家的注册服务器不认你的注册码.怎么办? google.... 然后找到一篇 Deactivating you ...
- My97DatePicker日期控件使用方法
My97DatePicker是一款网页版非常简单而且好用的日期控件,其实几年前就使用过了,这次再次用到,总结下: 首先去官网下载地址:http://www.my97.net/dp/down.asp 在 ...
- 从键盘输入当月利润I,求应发放奖金总数?
企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%:20万到40万之间时 ...
- UPDATE---修改表中数据
UPDATE table_name SET column1=value1,column2=value2,... [WHERE conditions]; 例: UPDATE userinfo SET n ...
- .net+easyui系列--按钮
easyui提供了各种按钮样式,包括搜索.新增.保存.删除等 <a id="btn" href="#" class="easyui-linkbu ...
- 史上最全的JavaScript工作笔记
/* * JavaScript查看对象函数 */ function resultTest( obj ){ var resultTest = ''; $.each(obj,function(key,va ...
- html5 video.js 使用及兼容所有浏览器
废话少说,直接开始 一.准备材料 video.js下载: http://www.videojs.com/ 二.代码 引入相关文件:(必须放在文件的开头,也是说一定要放在video标签之前) 贴入htm ...