/*
* 用c语言实现动态数组(类似于java中的Arraylist)
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct str
{
//保存元素的数组指针
int *a;
//当前元素的个数
int index;
//数组最多容纳的元素
int max;
}st;
/*
* 创建一个最多容纳num个元素的数组
*/
st *create(int num)
{
st *ss=(st *)malloc(sizeof(st));
if(ss==NULL)
{
printf("create fail!\n");
exit(1);
}
ss->index=0;
ss->max=num;
ss->a=(int *)malloc(sizeof(int)*num);
if(ss->a==NULL)
{
printf("create fail!\n");
exit(1);
}
return ss;
}
/*
* 数组扩容并复制(默认扩大为原来的两倍)
*/
void createbigger(st *ss)
{
int *p=(int *)malloc(sizeof(int)*(ss->max)*2);
if(p==NULL)
{
printf("create fail!\n");
exit(1);
}
int i;
for(i=0;i<ss->index;i++)
{
*(p+i)=ss->a[i];
}
ss->index=i;
ss->a=p;
ss->max=ss->max*2;
}
/*
* 向动态数组中添加元素
*/
void addelement(st *ss,int value)
{
//数组没有装满元素
if(ss->index<ss->max)
{
ss->a[ss->index]=value;
ss->index++;
}
//数组已经装满元素(此时应该扩容)
else
{
createbigger(ss);
ss->a[ss->index]=value;
ss->index++;
}
}
int main()
{
int num=3;
st *src=create(num);
addelement(src,1);
addelement(src,2);
addelement(src,3);
printf("当前数组中的元素个数=%d,当前数组中最多可以容纳的元素个数=%d\n",src->index,src->max);
addelement(src,4);
printf("当前数组中的元素个数=%d,当前数组中最多可以容纳的元素个数=%d\n",src->index,src->max);
return 0;
}
分享到:
相关推荐
数组类模版及调用 arraylist vs2008,包含友元函数重载
java中ArrayList的用法
自己写的C#动态数组类库,类似于Arraylist类,比较简洁,主要功能都有,适合学习交流,完成作业。
定义:ArrayList是命名空间System.Collections下的一部分,它是使用大小可按需动态增加的数组实现IList接口。ArrayList的默认初始容量为0,随着元素添加到ArrayList中,容量会根据需要通过重新分配自动增加。 优点...
自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构
java中数组列表ArrayList的使用.doc
使用数组列表ArrayList填充ListBox
1:一维数组:(JAVA中的数组类似于C中的指针形式的数组) 定义:type var_name[]: 如 int a[]; float b[]; int month_days[]; 使用:var_name=new type[size];如 a=new int[10]; month_days=new int[12];java...
C#中数组与arraylist C#中数组的应用与arraylist的应用 即两者间的区别
用java自己实现的arrayList,比较详细,有助于初学者理解arrayList的基本概念和基础用法
ArrayList是Java中的一种常见的数据结构,它实现了List接口,是线程不安全的动态数组。它的容量可以自动增长,因此可以方便地插入、删除和查找数据,是Java集合框架中广泛使用的一种结构。 ArrayList的优势在于灵活...
java中数组列表arraylist的使用.docx
C语言版的ArrayList,具有ArrayList的基本方法增加、插入、删除、自动扩容等。
详细介绍Java中ArrayList的使用方法以及与vector的对比
主要给大家介绍了关于Java中ArrayList的removeAll方法的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来看看吧。
java中数组列表ArrayList的使用[归类].pdf
创建界面相关的接口:将菜单中显示的内容定义成若干字符串常量,放入一个接口Menu中以便使用 TestDemo(主类) import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; /** * @Author ...
实现了ArrayList的部分功能,代码有什么问题,欢迎大神指正给予指导意见。
InitArray自己编写的一个JAVA用的集合类,试试效果如何。
java 数组转list list转数组 list数组互转 java8 代码示例