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(/ ...
随机推荐
- C++编译器函数模版机制剖析 - 函数模版的本质
思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> u ...
- Unsupervised Feature Learning and Deep Learning(UFLDL) Exercise 总结
7.27 暑假开始后,稍有时间,“搞完”金融项目,便开始跑跑 Deep Learning的程序 Hinton 在Nature上文章的代码 跑了3天 也没跑完 后来Debug 把batch 从200改到 ...
- Android学习站点推荐
收集了一些比較好的Android学习站点,希望对大家有所帮助: 1.http://developer.android.com/ Android官方站点,可惜被屏蔽了,须要使用FQ软件 2.http:/ ...
- java11 Guava:谷歌开发的集合库
Guava:谷歌开发的集合库,通过build path->Add External JARs 把guava.jar包加进去. 版本控制工具:.CVS .SVN .git 所以需要下载git客户端 ...
- shell 实例脚本
例1: #!/bin/bashsum=0;for i in {1..100..2}do let "sum+=i"doneecho "the sum is $sum&quo ...
- Centos7.0挂载优盘安装jdk1.7和tomcat7.0
Centos7.0挂载优盘安装jdk1.7和tomcat7.0 前言: 笔者发现用wget方法直接在服务器下载jdk和tomcat速度很慢,而且jdk1.7用wget方法下载链接不好找,不如直接从官网 ...
- WWDC2016 Session笔记 – Xcode 8 Auto Layout新特性
目录 1.Incrementally Adopting Auto Layout 2.Design and Runtime Constraints 3.NSGridView 4.Layout Feedb ...
- CountDownLatch(倒计时计数器)使用说明
方法说明: public void countDown() 递减锁存器的计数,如果计数到达零,则释放所有等待的线程.如果当前计数大于零,则将计数减少.如果新的计数为零,出于线程调度目的, ...
- Linux grep用法整理
grep -i 忽略大小写 grep --color grep -v 反向查找 grep -o 只显示被模式匹配到的字符串
- 利用javascript实现文本的自动输出
主要利用了setTimeout(),递归和String.substring(); 做出的效果就像是有一个打字员在打字. <!doctype html> <html lang=&quo ...