#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语言数组的操作的更多相关文章

  1. Java 语言基础之数组常见操作

    对数组操作最基本的动作: 存和取 核心思想: 就是对角标的操作 数组常见操作: 1, 遍历 2, 获取最大值和最小值 3, 排序 4, 查找 5, 折半查找 // 1. 遍历 int[] arr = ...

  2. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  3. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  4. C++语言-06-文件操作

    C语言文件操作 C++语言是C语言的超集,是在C语言的基础上增加了面向对象的特性而创造出来的,最初被命名为带类的C.所以C++语言中包含了C语言的思想,如:C++语言中文件操作的原理与步骤与C语言基本 ...

  5. GO语言数组和切片实例详解

    本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...

  6. swift语言之多线程操作和操作队列(下)———坚持51天吃掉大象(写技术文章)

    欢迎有兴趣的朋友,参与我的美女同事发起的活动<51天吃掉大象>,该美女真的很疯狂,希望和大家一起坚持51天做一件事情,我加入这个队伍,希望坚持51天每天写一篇技术文章.关注她的微信公众号: ...

  7. js对数组的操作函数

    js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手, ...

  8. PHP数组的操作

    一.数组操作的基本函数数组的键名和值array_values($arr);获得数组的值array_keys($arr);获得数组的键名array_flip($arr);数组中的值与键名互换(如果有重复 ...

  9. js数组的操作及数组与字符串的相互转化

    数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/ ...

随机推荐

  1. MySQL check the manual that corresponds to your MySQL server version for the right syntax错误

    地化GO的时候一直遇到一个错误就是check the manual that corresponds to your MySQL server version for the right syntax ...

  2. Android 定时任务高度【schedule】与【scheduleAtFixedRate】差别

    在android中调度定时任务有两种方法 1.schedule 2.scheduleAtFixedRate 这两种方法的差别在于 首次调用时间(Date when)这个參数 <span styl ...

  3. web app 相关记录

    今天在手机浏览器上运行cocos2d-html5的sample, crystalcraze运行起来只有10~20帧, moonwarrior只有20~30帧,很不理想的数据: 记录下几个web app ...

  4. 【转】CCUserDefault类深入分析——2013-08-25 22

    http://game.dapps.net/gamedev/game-engine/8792.html 另:本章所用Cocos2d-x版本为: 2.1.1 (2013-01-28) 大家好,今天我们来 ...

  5. Linux环境下搭建Android开发环境

    最近在折腾linux.因为咱是搞安卓开发的,所以少不了需要搭建Android开发环境,就此小记,希望能给向我一样的开发者一点帮助!开干! 1.安装JDK 下载JDK包,得到的是类似于jdk-8u65- ...

  6. oracle ebs中并发程序定义查询sql

    ---concurrent program define SELECT FCPV.CONCURRENT_PROGRAM_ID, FCPV.CONCURRENT_PROGRAM_NAME, FCPV.U ...

  7. 深入理解计算机系统第二版习题解答CSAPP 2.5

    分别写出十六进制数0x87654321在大端法机器和小端法机器上第1个.前2个.前3个字节. A.小端法:21    大端法:87 B.小端法:21 43      大端法:87 65 C.小端法:2 ...

  8. 获取当前时间日期并格式化--JS

    工作当中,总是遇到很多觉得不错的JS脚本.现在觉得还是找个地方记录下来,以后可以随时查看. /** *获取当前时间日期并格式化 */ function getNowDate(){ var mydate ...

  9. Vivado学习笔记_002

    经过几天的试用逐渐熟悉了vivado,和ISE相比vivado确实有了很多改良. 发现了以下几个特点:   1.数据格式统一了 在以往的设计中,保存数据的格式非常多.ISE有很多种格式的文件,在tra ...

  10. C#三元运算符

    ?:表达式1?表达式2:表达式3如果1为真则执行2,为假执行3