package demo;
import java.util.Arrays;
public class DiyArrayListDemo {
public static void main(String[] args){
int[] arr = {5,8,10};
System.out.println(Arrays.toString(arr));//=>[5, 8, 10]
arr = DiyArrayList.add(arr, 15);
arr = DiyArrayList.add(arr, 20);
arr = DiyArrayList.add(arr, 25);
System.out.println(Arrays.toString(arr)); //=>[5, 8, 10, 15, 20, 25]
arr = DiyArrayList.remove(arr, 1);
System.out.println(Arrays.toString(arr)); //=>[5, 10, 15, 20, 25]
}
}
class DiyArrayList{
public static int[] add(int[] src,Integer newData){
//定义目标数组,长度是比原始数组多一位
int[] dest = new int[src.length+1];
//从src的0位开始,复制到dest的0位置,复制长度是src的长度
System.arraycopy(src, 0, dest, 0, src.length);
//填充最后一位的值
dest[src.length] = newData;
return dest;
}
public static int[] remove(int[] src,Integer index){
//定义目标数组,长度是比原始数组少一位
int[] desc = new int[src.length-1];
for(int i=0; i<src.length; i++){
//超过索引index的数据往前移动一位
if(i > index){
desc[i-1] = src[i];
}else{
desc[i] = src[i];
}
}
return desc;
}
}
//定义一个结构体,data里面储存的是int类型指数组,count存储的是数组的长度
typedef struct arrayList {
int* data;
int count;
} ArrayList;
void initArrayList(ArrayList* list);
void arrayListAdd(ArrayList* list, int data);
void arrayListRemove(ArrayList* list, int index);
void printAll(ArrayList list);
demo.c
#include <stdio.h>
#include <stdlib.h>
#include "test.h"
int main() {
ArrayList arrayList;
initArrayList(&arrayList);
arrayListAdd(&arrayList, 10);
arrayListAdd(&arrayList, 13);
arrayListAdd(&arrayList, 15);
arrayListRemove(&arrayList, 2);
printAll(arrayList);
}
/********************************
函数名:initArrayList()
功能:初始化ArrayList结构体
输入:ArrayList类型结构体指针
输出:无
*/
void initArrayList(ArrayList* arrayList) {
arrayList->data = NULL;
arrayList->count = 0;
}
/*******************************
函数名:arrayListAdd()
功能:添加数据到ArrayList类型结构体里面的数组
输入:ArrayList类型结构体指针,int类型数据
输出:无
*/
void arrayListAdd(ArrayList* list, int data) {
int count = list->count;
//重新申请空间,空间比现在的长度大1个int长度
int* newDataArr = (int*)realloc(list->data,sizeof(int) * (++count));
if (newDataArr != NULL) {
list->data = newDataArr;
list->data[count - 1] = data;
list->count++;
}
else {
puts("申请空间失败");
}
}
/*******************************
函数名:arrayListRemove()
功能:根据index删除ArrayList类型结构体里面的数组元素
输入:ArrayList类型结构体指针,int类型索引
输出:无
*/
void arrayListRemove(ArrayList* list, int index) {
if (index > list->count) {
puts("超出数组索引");
exit(1);
}
//把大于index的数组数据往前移动一个索引
for (int i = 0; i < list->count; i++) {
if (i > index) {
list->data[i - 1] = list->data[i];
}
}
int count = list->count;
//重新申请空间,数组长度缩减一个int长度
int *newDataArr = realloc(list->data, sizeof(int) * (--count));
if (newDataArr != NULL) {
list->data = newDataArr;
list->count = count;
}
else {
puts("申请空间失败");
}
}
/********************************
函数名:打印所有数组
输入:ArrayList类型结构体
*/
void printAll(ArrayList list) {
for (int i = 0; i < list.count; i++) {
printf("%d \r\n", list.data[i]);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有