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(/ ...
随机推荐
- 【28】避免返回handles指向对象内部成分
1.为什么? 很简单,你指向箱子里面的一个物品,使用这个物品.但是箱子不受你控制,箱子销毁了,里面的物品也会随之销毁.那么这种情况下,你指向的就是一堆垃圾,你还在使用这个物品,导致未定义的行为.
- BZOJ 2049: [Sdoi2008]Cave 洞穴勘測 LCT
入门级LCT: 仅仅有 Cut Link 2049: [Sdoi2008]Cave 洞穴勘測 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 3073 ...
- dubbox开发rest+json指南【转】
http://dangdangdotcom.github.io/dubbox/rest.html 目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 RE ...
- InnoTop
是一个系统活动报告,类似于Linux性能工具,它与Linux的top命令相仿,并参考mytop工具而设计. 它专门用后监控InnoDB性能和MySQL服务器.主要用于监控事务,死锁,外键,查询活动,复 ...
- The 10 Most Important Security Controls Missing in JavaEE--reference
JavaEE has some excellent built-in security mechanisms, but they don’t come close to covering all th ...
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Flex学习教程网站地址
http://www.985school.com/flex/complex_controls.html
- Android开发之Intent的传值--Application
每当我们想要将输入的值传递到多个界面时,只是使用Intent传值的话,就会有一些的弊端. 下面我就以三个页面为例,进行简单的说明一下: 思路: 1.第一个页面是客户输入相关的信息. 2.将客户输入的信 ...
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析
文章出处:http://inter12.iteye.com/blog/1430144 MYSQL的全表扫描,主键索引(聚集索引.第一索引),非主键索引(非聚集索引.第二索引),覆盖索引四种不同查询的分 ...
- mysql的分区技术(建立分区)
-- mysql建立表分区,使用range方法建立: create table t_range( id int(11), money int(11) unsigned not null, date d ...