#include<stdio.h>
#include<malloc.h>
void initMyarry(struct Myarry *arr);
int isFull(struct Myarry *arr);
void expandMyarry(struct Myarry *arr);
void show(struct Myarry * arr);
void add(struct Myarry *arr,int data);
struct Myarry{
   //数组的首地址
   int * firstAddress;
    //当前数组的大小
   int currentLength;
    //初始化数组大小
   int initLength;
    //当前元素
   int current;
  //增长因子
   double times;

};
main(){
  struct Myarry myarry;
 //初始化数组
  initMyarry(&myarry);
  //增加元素
  int i = 1 ;
  for( ; i <=25 ; i++){
      add(&myarry,i);
  }

//show出元素
  show(&myarry);

}

//判断数组是否已经满了
int isFull(struct Myarry *arr){

if(arr->current > arr->currentLength){
    return 1;
  }else{
    return  0;
  }

}

//按照增长因子来增加数组长度
void expandMyarry(struct Myarry *arr){
   printf("expandMyarry");
  //开辟新的空间
   int spaceSize = arr->currentLength + arr->initLength * arr->times ;
   printf("spaceSize = %d\n",spaceSize);
   int * newSpaceAddress = (int * ) malloc(sizeof(int) * spaceSize );
   if(newSpaceAddress==NULL){
     printf("has no nough space for newSpaceAddress ");
     exit(1);
   }else{
        //复制元素
      int i = 0;
      for(; i < arr->current ; i++){
        *(newSpaceAddress + i ) =  *(arr->firstAddress + i );

}
      arr->currentLength = spaceSize;
      arr->firstAddress = newSpaceAddress;

}

}

//在数组末尾插入数据
void add(struct Myarry *arr,int data){
   // printf("data = %d",data);
    //判断数组是否已经满0
     // 1 是
     if( isFull(arr)){

expandMyarry(arr);
        add(arr,data);
     }
      // 2 否
     else{
         printf("\n");
          *( arr->firstAddress + arr->current ) =  data;
          arr->current += 1;
     }

}

//显示数组里面的值
void show(struct Myarry * arr){
    int i = 0;
    for(;i < arr->current ; i++){
        printf("arr[%d] = %d\n" ,i , *(arr->firstAddress + i));
    }
}

//初始化数组
void initMyarry(struct Myarry * arr){
    //当前数组大小为20
    arr->currentLength = 20;
    //初始化数组大小
    arr->initLength = 20;
    //增长因子为1.5
    arr->times = 1.5;
    //当前元素为0
    arr->current=0;
    //开辟空间
    arr->firstAddress = (int *)malloc(sizeof(int)*(arr->currentLength));
     if(arr->firstAddress == NULL){
        printf("has no enough space");
    }
}

用c实现部分java数组功能,很烂,留个参考吧相关推荐

  1. 横版java_Project4 自己用java写的横版格斗游戏 功能还不是很复杂 可以作为参考~ Other Games 其他 238万源代码下载- www.pudn.com...

    文件名称: Project4下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 5963 KB 上传时间: 2013-07-17 下载次数: 4 提 供 者: lyk ...

  2. 打印Java数组的最简单方法是什么?

    在Java中,数组不会覆盖toString() ,因此,如果尝试直接打印一个,则将得到className +'@'+数组的hashCode的十六进制,如Object.toString()所定义: in ...

  3. Java数组与容器类分析资料--数组、List和Set、Map等

    2019独角兽企业重金招聘Python工程师标准>>> Java容器分析--数组 数组是Java语言内置的类型,除此之外,Java有多种保存对象引用的方式.Java类库提供了一套相当 ...

  4. Java 8功能教程– ULTIMATE指南(PDF下载)

    编者注:在本文中,我们提供了全面的Java 8功能教程. 自Java 8公开发布以来已经有一段时间了,所有迹象都表明这是一个非常重要的版本. 我们在Java Code Geeks处提供了大量教程,例如 ...

  5. java数组使用实验报告_JAVA数组与类的定义-java实验报告

    JAVA数组与类的定义-java实验报告 JAVA数组与类的定义-java实验报告 .实验目的与要求 1. 熟悉Java类.对象和方法的一般操作练习等. 2. 熟悉数组等的定义和使用. 二.实验内容及 ...

  6. Java数组与容器类分析资料--数组、List和Set、Map-asp.net关注

    数组是Java语言内置的类型,除此之外,Java有多种保存对象引用的方式.Java类库提供了一套相当完整的容器类,使用这些类的方法可以保存和操纵对象.下面分别进行讨论,在研究Java容器类之前,先了解 ...

  7. Java-杂项:Java数组Array和集合List、Set、Map

    ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...

  8. java中的数组增删查改操作,java数组实现增删改查

    java 实现动态数组,Java工具类Arrays中不得不知的常用方法,数组实现队列java,java数组实现增删改查 java 增删改查代码 import java.sql.Connection; ...

  9. java数组删除数组元素_如何在Java中删除数组元素

    java数组删除数组元素 When we create an array in Java, we specify its data type and size. This is used by JVM ...

最新文章

  1. 全民K歌内容挖掘与召回
  2. Django 搭建CMDB系统完整[1](用户登录)
  3. GD项目回顾总结之预热
  4. win2008文件服务器fs,文件服务器 fs
  5. 最大排列问题的算法实现(Python)究竟最后调换位置的有哪几个?
  6. SQL Server CLR 启用、部署
  7. ServiceMash服务网格--理解lstio/envoy
  8. 什么是真正的大数据营销
  9. Java开发常见英文单词(带音标翻译)
  10. 浅析汽车融资租赁业务模式
  11. leetcode链表总结
  12. 图像特征提取:Sobel边缘检测
  13. 【Matlab】矩阵
  14. CC00051.elasticsearch——|HadoopElasticSearch.V03|——|ELK.v03Logstash部署.V3|
  15. Jenkins与DevOps持续交付详解
  16. 拒酒词,好难找哟,留到有用
  17. K近邻算法(k-nearest neighbor,KNN)
  18. 虎书学习笔记2:图形学基础数学(向量、点积、叉积、)
  19. dom4j 学习 -- 封装dom4j工具类+如何使用dom4j解析
  20. @Validated和@Valid使用

热门文章

  1. java 8 stream中的Spliterator简介
  2. git gui怎么拉取项目代码_Git可视化极简易教程 —— Git GUI使用方法
  3. 分布式事务、cloud、boot、常规队列MQ、elk、kafuka
  4. java.awt.Graphics2D 生成图片--个人章的方法
  5. Effective Java之检查参数的有效性(三十八)
  6. Netty私有栈协议
  7. mac golang grpc proto pb文件生成go文件.md
  8. Codeup墓地-问题 A: 算法7-15:迪杰斯特拉最短路径算法
  9. 测试点解析:1049 数列的片段和_12行代码AC
  10. 你懂change buffer吗