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

 # 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. @RequestMapping 用法详解之地址映射

    @RequestMapping 用法详解之地址映射 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没 ...

  2. CC2540串口输出调试功能

    可以用printf()做串口打印输出 这个功能非常简单,首先在工程管理下的preprocessor把串口打开HAL_UART=TRUE. 然后看我的npi.c文件,多了什么自己琢磨,懒点的就直接复制吧 ...

  3. CMS系统存储路径

    CMS系统特点:前后端分离 index.html 首页文件index.php 管理后台的页面 api文件夹: 提供的接口 caches文件夹: 缓存文件 html文件夹:  生成的静态页面 phpcm ...

  4. 利用html5、websocket和opencv实现人脸检测

    最近学习人脸识别相关的东西,在MFC下使用OpenCV做了一个简单的应用.训练需要较多的数据,windows应用程序终究还是不方便,于是想着做成CS模式:检测识别都放在服务器端,视频获取和显示都放在网 ...

  5. 1.1Axure简介

    1.部件:点击部件右上角的?,可以看到相关注释,注释底部有网站链接,可查看部件的详细介绍.

  6. android 任意类 获得屏幕大小

    方法一 WindowManager managet=(WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display ...

  7. microsoft office professional plus2013激活

    激活工具一般使用KMS8,KMS8不支持零售版的激活, 而office professional plus2013零售版,需要先转化为VOL版 需要以下两步: 1.将word转化为vol版 链接: h ...

  8. javase-->基础知识(三)

    1.方法 普通方法:4个必要,1个可选 1):必须有返回值类型,没有返回值用void表示 2):必须有名字 3):必须有()和形参 4):必须有{}方法体 5):可选static,表示静态的方法,可以 ...

  9. 也说python的类--基于python3.5

    在面向对象的语言中,除了方法.对象,剩下的一大重点就是类了,从意义上来讲,类就是对具有相同行为对象的归纳.当一个或多个对象有相同属性.方法等共同特征的时候,我们就可以把它归纳到同一个类当中.在使用上来 ...

  10. Lintcode 102.带环链表

    ------------------------ 只要设置两个指针,称为快慢指针,当链表没有环的时候快指针会走到null,当链表有环的时候快指针早晚会追上慢指针的. AC代码: /** * Defin ...