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进行编码的时候,无形中会留下浅拷贝的隐患. 二.场景 有这样一个例子,第一个箱 ...
随机推荐
- git 修改注释信息
1. push 之前 先看看自己提交过多少次,然后执行 git rebase -i HEAD~数字(你要修改你的第几次提交) 接下来执行,修改注释 git commit --amend 修改完注释之后 ...
- js中子页面父页面方法 变量相互调用
(1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面 之后的操作和在父页面中写代码一样写 window.parent.a ...
- iOS三种正则表达式
1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @"nijino_saki@.com": NSString *regex = @ ...
- Java异常处理机构(日常笔记)
try{ 需要保护的代码块 }catch(异常类型 实例){ 捕捉到异常时的代码处理块 }[可有0~多个catch语句] finaly{ 不管异常是否发生都要执行的代码块}
- 聊一聊log4j2配置文件log4j2.xml
一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...
- sql server报:名称 不是有效的标识符
可能出现的几种情况: 1.执行sql提示 名称***不是有效的标识符 --添加括号 sql exec(sql) 注意exec的时候要到括号 exec (@sql) 2.sql中的单引号嵌套采用两个单 ...
- 多个html怎么导入相同的头部导航
1. iframe 包含法.页头和页尾分别做成一个页面,然后通过iframe嵌入到调用的页面.这种方法在页头页尾高度固定的时候比较适用,因为当页头页尾高度不固定时,需要iframe根据页面内容自适应高 ...
- adb 的使用
打出log:adb logcat -s fliterName ps:(fliterName就是你的tag)
- Mac OS X上搭建伪分布式CDH版本Hadoop开发环境
最近在研究数据挖掘相关的东西,在本地 Mac 环境搭建了一套伪分布式的 hadoop 开发环境,采用CDH发行版本,省时省心. 参考来源 How-to: Install CDH on Mac OSX ...
- git push 报错!!!!
[root@NB sh]# git push To git@x0.xx.xxx.x1:yanjing_chenl/IT-DOC.git ! [rejected] master -> master ...