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

  1. # include <stdio.h>
  2. # include <malloc.h>
  3. # include <stdlib.h>
  4.  
  5. //用C实现数组
  6.  
  7. typedef struct Array{
  8. int len;//数组的长度
  9. int* pHead;//数组首地址
  10. int cnt;//数组有效元素个数
  11. }* PARR,ARR;
  12.  
  13. bool insert(PARR arr,int index,int num);
  14. bool add(PARR arr,int num);
  15. bool isEmpty(PARR arr);
  16. void print(PARR arr);
  17. void initArray(PARR arr,int len);
  18. bool isFull(PARR arr);
  19. bool deleteArr(PARR arr,int index);
  20. void sort(PARR arr);
  21.  
  22. int main(void)
  23. {
  24. ARR arr;
  25. initArray(&arr,);
  26. if(isEmpty(&arr)){
  27. printf("数组为空\n");
  28. }
  29.  
  30. add(&arr,);
  31. add(&arr,);
  32. add(&arr,);
  33. add(&arr,);
  34. add(&arr,);
  35. // add(&arr,1);
  36. // add(&arr,1);
  37. print(&arr);
  38. sort(&arr);
  39. deleteArr(&arr,);
  40. print(&arr);
  41.  
  42. return ;
  43. }
  44.  
  45. //初始化数组
  46. void initArray(PARR arr,int length){
  47. //申请内存
  48. arr->pHead = (int*)malloc(sizeof(int)*length);
  49. if(NULL==arr->pHead){
  50. printf("申请内存失败");
  51. exit(-);
  52. }
  53. arr->len = length;
  54. arr->cnt = ;
  55. }
  56.  
  57. //遍历数组
  58. void print(PARR arr){
  59. if(isEmpty(arr)){
  60. printf("数组为空");
  61. }
  62. //for循环打印数组
  63. for(int i=; i<arr->cnt; i++){
  64. printf("%d ",arr->pHead[i]);
  65. }
  66. printf("\n");
  67.  
  68. }
  69.  
  70. //判读数组是否为空
  71. bool isEmpty(PARR arr){
  72. return arr->cnt==;
  73. }
  74.  
  75. //判断数组是否满
  76. bool isFull(PARR arr){
  77. return arr->cnt==arr->len;
  78. }
  79.  
  80. //往数组里添加元素
  81. bool add(PARR arr,int num){
  82. if(isFull(arr)){
  83. printf("数组已满");
  84. return false;
  85. }
  86.  
  87. arr->pHead[arr->cnt] = num;
  88. arr->cnt++;
  89. return true;
  90. }
  91.  
  92. //向数组中插入元素
  93. bool insert(PARR arr,int index,int num){
  94. if(isFull(arr)){
  95. return false;
  96. }
  97. if(index<||index>arr->cnt+){
  98. return false;
  99. }
  100.  
  101. //把index-1之后的数往后移动
  102. for(int i=arr->cnt-; i>=index-;i--){
  103. arr->pHead[i+] = arr->pHead[i];
  104. }
  105.  
  106. arr->pHead[index-] = num;
  107. arr->cnt++;
  108. return true;
  109. }
  110.  
  111. //删除指定位置的元素
  112. bool deleteArr(PARR arr,int index){
  113. if(isEmpty(arr)){
  114. return false;
  115. }
  116. if(index<||index>arr->cnt+){
  117. return false;
  118. }
  119.  
  120. for(int i=index; i<arr->cnt;i++){
  121. arr->pHead[i-] = arr->pHead[i];
  122. }
  123. arr->cnt--;
  124. return true;
  125. }
  126.  
  127. //排序
  128. void sort(PARR arr){
  129.  
  130. int i,j,tem;
  131. for(i=;i<arr->cnt-;i++) {
  132. for(j=;j<arr->cnt--i;j++){
  133. if (arr->pHead[j]>arr->pHead[j+]){
  134. tem = arr->pHead[j];
  135. arr->pHead[j] = arr->pHead[j+];
  136. arr->pHead[j+] = tem;
  137. }
  138. }
  139. }
  140. }

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. git 修改注释信息

    1. push 之前 先看看自己提交过多少次,然后执行 git rebase -i HEAD~数字(你要修改你的第几次提交) 接下来执行,修改注释 git commit --amend 修改完注释之后 ...

  2. js中子页面父页面方法 变量相互调用

    (1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面  之后的操作和在父页面中写代码一样写 window.parent.a ...

  3. iOS三种正则表达式

    1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @"nijino_saki@.com": NSString *regex = @ ...

  4. Java异常处理机构(日常笔记)

    try{ 需要保护的代码块 }catch(异常类型 实例){ 捕捉到异常时的代码处理块 }[可有0~多个catch语句] finaly{ 不管异常是否发生都要执行的代码块}

  5. 聊一聊log4j2配置文件log4j2.xml

    一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...

  6. sql server报:名称 不是有效的标识符

    可能出现的几种情况: 1.执行sql提示 名称***不是有效的标识符 --添加括号 sql exec(sql) 注意exec的时候要到括号 exec  (@sql) 2.sql中的单引号嵌套采用两个单 ...

  7. 多个html怎么导入相同的头部导航

    1. iframe 包含法.页头和页尾分别做成一个页面,然后通过iframe嵌入到调用的页面.这种方法在页头页尾高度固定的时候比较适用,因为当页头页尾高度不固定时,需要iframe根据页面内容自适应高 ...

  8. adb 的使用

    打出log:adb logcat -s fliterName     ps:(fliterName就是你的tag)

  9. Mac OS X上搭建伪分布式CDH版本Hadoop开发环境

    最近在研究数据挖掘相关的东西,在本地 Mac 环境搭建了一套伪分布式的 hadoop 开发环境,采用CDH发行版本,省时省心. 参考来源 How-to: Install CDH on Mac OSX ...

  10. git push 报错!!!!

    [root@NB sh]# git push To git@x0.xx.xxx.x1:yanjing_chenl/IT-DOC.git ! [rejected] master -> master ...