c语言数组实现ArrayList部分函数

这篇博客展示了如何使用C语言实现ArrayList,包括初始化、追加、插入、删除、倒置和显示数组元素等功能。通过动态内存分配和结构体管理数组,提供了一组基本操作以支持ArrayList的常用操作。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<malloc.h>		//包含malloc函数
#include<stdlib.h>		//包含exit函数


/*定义一个数据类型,该数据类型的名字叫做struct Array,该数据类型含有三个成员,分别是 pBase , len , cnt*/
struct Array {
	/*ArrayList实现的组成元素*/
	int* pBase;			//存储数组第一个元素的地址
	int len;			//数组所能容纳的最大的元素个数
	int cnt;			//当前数组的有效元素个数
	//int increment;	//增长因子
	/*
	增长因子存在的优缺点:
	优点:当数组储存满了之后,如果每增加一个元素就向操作系统申请一次的话,这样很影响效率。
		  增长因子的作用就是在数组满了之后,以一定的数值对内存进行扩充,减少了向操作系统进行申请的次数。
	缺点:额外消耗内存,可能申请之后部分内存没用到。
	*/
};
/*ArrayList方法的实现*/
void init_Array(struct Array* parray , int length);		//初始化
bool append_Array(struct Array* parray , int var);		//追加元素,将var追加到数组里面
bool insert_Array(struct Array* parray, int pos , int var);		//插入元素,pos的值从1开始
bool delete_Array(struct Array* parray, int pos, int* pvar);		//删除元素,获取并删除第pos个元素
int get();				//获取某个元素的地址
bool isEmpty(struct Array parray);			//判断是否为空
bool isFull(struct Ar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中,没有内置的ArrayList数据结构,但是我们可以通过使用指针和动态内存分配来实现类似ArrayList的功能。 下面是一个简单的示例代码,展示了如何在C语言中创建一个类似ArrayList的数据结构: ```c #include <stdio.h> #include <stdlib.h> typedef struct { int* data; // 存储数据的数组 int size; // 当前存储的元素个数 int capacity; // 数组的容量 } ArrayList; // 初始化ArrayList void init(ArrayList* list) { list->data = NULL; list->size = 0; list->capacity = 0; } // 向ArrayList中添加元素 void add(ArrayList* list, int element) { if (list->size == list->capacity) { // 如果数组已满,则扩展数组的容量 int newCapacity = (list->capacity == 0) ? 1 : list->capacity * 2; int* newData = (int*)realloc(list->data, newCapacity * sizeof(int)); if (newData == NULL) { printf("内存分配失败\n"); return; } list->data = newData; list->capacity = newCapacity; } list->data[list->size] = element; list->size++; } // 获取ArrayList中指定索引的元素 int get(ArrayList* list, int index) { if (index < 0 || index >= list->size) { printf("索引越界\n"); return -1; } return list->data[index]; } // 释放ArrayList占用的内存 void freeArrayList(ArrayList* list) { free(list->data); list->data = NULL; list->size = 0; list->capacity = 0; } int main() { ArrayList list; init(&list); add(&list, 10); add(&list, 20); add(&list, 30); printf("元素个数:%d\n", list.size); printf("第一个元素:%d\n", get(&list, 0)); printf("第二个元素:%d\n", get(&list, 1)); printf("第三个元素:%d\n", get(&list, 2)); freeArrayList(&list); return 0; } ``` 这段代码演示了如何使用指针和动态内存分配来创建一个类似ArrayList的数据结构。你可以通过调用`add`函数ArrayList中添加元素,通过调用`get`函数获取指定索引的元素。在使用完ArrayList后,记得调用`freeArrayList`函数释放占用的内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值