直接上代码,没有什么说的

 # include <stdio.h>
# include <malloc.h>
# include <stdlib.h> //用C实现数组 typedef struct Array{
int len;//数组的长度
int* pHead;//数组首地址
int cnt;//数组有效元素个数
}* PARR,ARR; bool insert(PARR arr,int index,int num);
bool add(PARR arr,int num);
bool isEmpty(PARR arr);
void print(PARR arr);
void initArray(PARR arr,int len);
bool isFull(PARR arr);
bool deleteArr(PARR arr,int index);
void sort(PARR arr); int main(void)
{
ARR arr;
initArray(&arr,);
if(isEmpty(&arr)){
printf("数组为空\n");
} add(&arr,);
add(&arr,);
add(&arr,);
add(&arr,);
add(&arr,);
// add(&arr,1);
// add(&arr,1);
print(&arr);
sort(&arr);
deleteArr(&arr,);
print(&arr); return ;
} //初始化数组
void initArray(PARR arr,int length){
//申请内存
arr->pHead = (int*)malloc(sizeof(int)*length);
if(NULL==arr->pHead){
printf("申请内存失败");
exit(-);
}
arr->len = length;
arr->cnt = ;
} //遍历数组
void print(PARR arr){
if(isEmpty(arr)){
printf("数组为空");
}
//for循环打印数组
for(int i=; i<arr->cnt; i++){
printf("%d ",arr->pHead[i]);
}
printf("\n"); } //判读数组是否为空
bool isEmpty(PARR arr){
return arr->cnt==;
} //判断数组是否满
bool isFull(PARR arr){
return arr->cnt==arr->len;
} //往数组里添加元素
bool add(PARR arr,int num){
if(isFull(arr)){
printf("数组已满");
return false;
} arr->pHead[arr->cnt] = num;
arr->cnt++;
return true;
} //向数组中插入元素
bool insert(PARR arr,int index,int num){
if(isFull(arr)){
return false;
}
if(index<||index>arr->cnt+){
return false;
} //把index-1之后的数往后移动
for(int i=arr->cnt-; i>=index-;i--){
arr->pHead[i+] = arr->pHead[i];
} arr->pHead[index-] = num;
arr->cnt++;
return true;
} //删除指定位置的元素
bool deleteArr(PARR arr,int index){
if(isEmpty(arr)){
return false;
}
if(index<||index>arr->cnt+){
return false;
} for(int i=index; i<arr->cnt;i++){
arr->pHead[i-] = arr->pHead[i];
}
arr->cnt--;
return true;
} //排序
void sort(PARR arr){ int i,j,tem;
for(i=;i<arr->cnt-;i++) {
for(j=;j<arr->cnt--i;j++){
if (arr->pHead[j]>arr->pHead[j+]){
tem = arr->pHead[j];
arr->pHead[j] = arr->pHead[j+];
arr->pHead[j+] = tem;
}
}
}
}

C代码实现数组的更多相关文章

  1. Linux Kernel代码艺术——数组初始化

    前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点摸不着头脑: const sys_call_ptr_t sys_call_table[__NR_syscall_max+ ...

  2. JMeter脚本java代码String数组要写成String[] args,不能写成String args[],否则报错。

    JMeter脚本java代码String数组中括号要写在类型关键字后面,不能写在变量名后面.

  3. 一行代码实现数组去重(ES6)

    ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; ...

  4. javascript高逼格代码实现数组去重,JSON深度拷贝,匿名函数自执行,数字取整等

    1.如何装逼用代码骂别人傻逼 (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 2.如何优雅的用代 ...

  5. Linux Kernel代码艺术——数组初始化【转】

    转自:http://www.cnblogs.com/hazir/p/array_initialization.html 前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点 ...

  6. java算法面试题:有数组a[n],用java代码将数组元素顺序颠倒

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...

  7. 来看下,C# WebService WSDL自动生成代码,数组参数的BUG。。。ArrayOfString

    ArrayOfString ArrayOfString ArrayOfString 解决C#客户端 ArrayOfString 参数问题.(希望搜索引擎能搜到,帮你解决神奇的ArrayOfString ...

  8. C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组

    #include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...

  9. [改善Java代码]警惕数组的浅拷贝

    建议62:警惕数组的浅拷贝 一.分析  在日常工作中,我们会遇见很多数组的拷贝和复制的问题,但是在你使用系统提供的API进行编码的时候,无形中会留下浅拷贝的隐患. 二.场景  有这样一个例子,第一个箱 ...

随机推荐

  1. Android studio 英文——中文 翻译插件

    TranslationPlugin 1.手动下载 TranslationPlugin ,在Android studio 中 2. 3. 4.选中文件,点击OK 5.设置快捷键 代号1 : 代号2 :

  2. jsonp是什么【转载自JavaScript微信公众号】

    转自 http://mp.weixin.qq.com/s/xNnKAeLv6sO0T-IvP2AUlQ          JavaScript微信公众号 一.JSONP的诞生 首先,因为ajax无法跨 ...

  3. ubuntu selinux

    apt install selinux-utils apt install policycoreutils https://zhidao.baidu.com/question/917938889387 ...

  4. Oracle 11g RAC 环境打PSU补丁的详细步骤

    首先重要的事情说三遍:操作之前还是自己先看文档!操作之前还是自己先看文档!!操作之前还是自己先看文档!!! 把11.2.0.4 RAC 环境打PSU补丁的步骤详细记录一下,方便参考. 环境:11.2. ...

  5. 【Gson】互相转化

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. 对象转为字符串 Strin ...

  6. 基于暗通道优先算法的去雾应用(Matlab/C++)

    基于暗通道优先的单幅图像去雾算法(Matlab/C++) 算法原理:             参见论文:Single Image Haze Removal Using Dark Channel Pri ...

  7. spring-aop学习【基于注解】

    我个人觉得,这个好像就是用在定制日志输出上,和log4j很像. 用途: 如果业务方法调用每一步都需要详细的日志,那就用这个吧 好处就是: 方便维护,只包含业务代码 下面开始说明: 所需要的jar包: ...

  8. java.lang.IllegalStateException: Web app root system property already set to different value

    webAppRootKey是在java web项目的web.xml配置文件中表示项目的唯一标示,在Eclipse调试Web项目时,项目的路径是一个临时路径,不在真正的路径下,可以通过log4j日志的方 ...

  9. ASP.NET MVC3中Controller与View之间的数据传递总结

    一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...

  10. A*算法的原理 <转>

    第一部分:A*算法简介    写这篇文章的初衷是应一个网友的要求,当然我也发现现在有关人工智能的中文站点实在太少,我在这里 抛砖引玉,希望大家都来热心的参与.     还是说正题,我先拿A*算法开刀, ...