C代码实现数组
直接上代码,没有什么说的
# 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代码实现数组的更多相关文章
- Linux Kernel代码艺术——数组初始化
前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点摸不着头脑: const sys_call_ptr_t sys_call_table[__NR_syscall_max+ ...
- JMeter脚本java代码String数组要写成String[] args,不能写成String args[],否则报错。
JMeter脚本java代码String数组中括号要写在类型关键字后面,不能写在变量名后面.
- 一行代码实现数组去重(ES6)
ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; ...
- javascript高逼格代码实现数组去重,JSON深度拷贝,匿名函数自执行,数字取整等
1.如何装逼用代码骂别人傻逼 (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 2.如何优雅的用代 ...
- Linux Kernel代码艺术——数组初始化【转】
转自:http://www.cnblogs.com/hazir/p/array_initialization.html 前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点 ...
- java算法面试题:有数组a[n],用java代码将数组元素顺序颠倒
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...
- 来看下,C# WebService WSDL自动生成代码,数组参数的BUG。。。ArrayOfString
ArrayOfString ArrayOfString ArrayOfString 解决C#客户端 ArrayOfString 参数问题.(希望搜索引擎能搜到,帮你解决神奇的ArrayOfString ...
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
#include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...
- [改善Java代码]警惕数组的浅拷贝
建议62:警惕数组的浅拷贝 一.分析 在日常工作中,我们会遇见很多数组的拷贝和复制的问题,但是在你使用系统提供的API进行编码的时候,无形中会留下浅拷贝的隐患. 二.场景 有这样一个例子,第一个箱 ...
随机推荐
- SQL排序问题
''按多个字段排序 Select * From Job order by job desc,id asc ''按首字符(非数字)排序 )) ) end ''按首字符分组 ) ''合并Order by排 ...
- DateUtil(比较两个日期是否是同一天)
1.比较两个日期是否是同一天 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date la ...
- Apple Pay 初探
Apple Pay 一.概述 1.支付方式:Touch ID/ Passcode 2.设备要求:iPhone6以上(iphone:线上/线下 ipad:线上 watch:线下) 3.系统要求:iOS8 ...
- 我的CodeF水A题之路
Codeforces Round #359 (Div. 2) A. Free Ice Cream 题目链接:http://www.codeforces.com/problemset/problem/6 ...
- BFS
广(宽)度优先搜索算法(Breadth-First-Search): BFS是从根节点开始,沿着树的宽度遍历树的节点.如果所有节点均被访问,则算法中止.遍历过程如图,一层一层的找(在访问图中某一起始 ...
- Expression Blend 4 学习笔记
Animation Storyboard(情节提要)在对象和时间线面板中建立和命名,定位到对象(object),通过拖动play head(播放头,时间线中垂直的黄色指示线)定位到特定的时间点,点击“ ...
- NoSQL与RDBMS的九点区别联系
原文链接:http://blog.sina.com.cn/s/blog_5373fb0b0101ft8a.html 1 理解ACID与BASE的区别(ACID是关系型数据库强一致性的四个要求, ...
- ***IT程序员自我修养和情商提升文章
低情商的13个表现 --------------------------------------------------------------------- — THE END —
- 【JavaScript】 Webpack安装及文件打包
背景 最近开启一个新项目,需要对前端的各类资源文件进行打包,经过多方调研后,决定使用webpack工具.但是网上的教程多是将webpack直接作为服务器使用,而我只是想将其作为单纯的资源打包工具而已. ...
- python3 与 pip3 安装与使用
1. yum -y install openssl* (pip依赖ssl环境) 2.编译安装python3 下载地址:https://www.python.org/ftp/python/ .tgz c ...