C语言实现支持多类型的ArrayList

这个博客展示了如何使用C语言实现一个通用的ArrayList数据结构,包括创建、添加元素、设置元素、打印、查找、删除等功能。代码示例中包含了完整的ArrayList结构体定义和相关操作函数,以及一个简单的测试用例。
摘要由CSDN通过智能技术生成
//ArrayList.h


/*-----------------------------
*
* For    算法数据结构
* IDE    DEV-CPP4.9.2
* Auhtor  Czp
* Date   2012/11/4
*------------------------------
*/
//防止重复导入 
#ifndef       MY_ARRAY_LIST_H
#define       MY_ARRAY_LIST_H


//如果C++里调用,采用C编译器 
#ifdef __cplusplus 
   extern "C" {
#endif

//检查是否成功申请内存 
#define Asert(par) if(par==NULL) {\
                printf("%s,%d malloc null",__FILE__,__LINE__);\
                return NULL;}
#define INIT_SIZE 10    //默认的数组大小 

typedef int Element;    //定义List里的元素类型
typedef void (*PrtFun)(Element);//打印函数 
typedef int  (*CmpFun)(Element,Element);//比较函数 
typedef struct _ArrayList{ //定义ArrayList 
      
      Element *data; //List的元素    
      size_t   size; //List可以容纳个数 
      size_t   index;//当前已有元素索引 
      CmpFun   cmpFun;//比较函数指针 
      PrtFun   ptrFun;//打印函数指针 
           
}ArrayList;


/*********************************
*@desc:创建ArrayList
*@return: NULL->内存申请失败 
          arr->指向ArrayList的指针   
**********************************            
*/
ArrayList *createArrayList(CmpFun cmp,PrtFun pfun)
{
      //申请数组的内存 
      ArrayList *arr = (ArrayList *)malloc(sizeof(ArrayList));
      Asert(arr);
      Element *data = (Element *)malloc(INIT_SIZE*sizeof(Element));
      Asert(data);
      arr->data  = data;
      arr->index = 0;
      arr->size  = INIT_SIZE; 
      arr->cmpFun &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值