C语言实现动态数组
2011-08-22 11:36
417 查看
现正在做一个项目,要使用动态数组,本想在网站上找一个代码,由于这个项目比较急,本想在网站上找个现成的代码直接用,可是找来找到,就觉得adm_qxx兄写的还算规则,可后来发现动态数组最重要的动态扩展部分竟然没有实现,所以我就修改了adm_qxx的代码,并贴在下面。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define INIT_DATA_NUM 10 #define FALSE 0 #define TRUE 1 typedef unsigned char BOOL; typedef int elem_t; typedef struct { int iCount; int iCapacity; elem_t * pData; }Array_t; BOOL initArray( Array_t * array, int size ); BOOL setValue( Array_t * array, int index, elem_t val ); BOOL extArray(Array_t *array, int size); elem_t * getRef( Array_t * array, int index ); elem_t getValue( Array_t * array, int index ); BOOL destroyArray( Array_t * array ); BOOL initArray(Array_t * array, int size) { BOOL bRet = FALSE; int initSize = (size > 0) ? size : INIT_DATA_NUM; array->pData = (elem_t *)malloc(initSize * sizeof( elem_t)); if (array->pData != NULL) { array->iCapacity = initSize; array->iCount = 0; bRet = TRUE; } return bRet; } BOOL extArray(Array_t *array, int size) { BOOL bRet = FALSE; int extSize = (size > 0) ? size : INIT_DATA_NUM; array->pData = (elem_t *)realloc(array->pData, (extSize + arrar->iCount) * sizeof(elem_t)); if (array->pData != NULL) { array->iCapacity += extSize; bRet = TRUE; } return bRet; } BOOL setValue(Array_t *array, int index, elem_t val) { BOOL bRet = FALSE; if(index >= 0 && index < array->iCapacity) { array->pData[index] = val; array->iCount++; bRet = TRUE; } else if (index >= array->iCapacity) { if (extArray(array, 0)) { array->pData[index] = val; array->iCount++; bRet = TRUE; } } return bRet; } elem_t *getRef( Array_t *array, int index ) { elem_t * eRet = NULL; if( index > 0 && index < array->iCount ) { eRet = array->pData + index; } return eRet; } elem_t getValue( Array_t * array, int index ) { return array->pData[index]; } int getCount(Array_t *array) { return array->iCount; } BOOL destroyArray( Array_t * array ) { free( array->pData ); array->pData = NULL; return TRUE; }
相关文章推荐
- C语言中实现数组的动态增长
- C语言实现动态数组
- C语言实现动态数组大小
- C语言提高-39讲: 动态存储管理与动态数组的实现(实践)
- C语言中实现数组的动态增长
- (转)动态数组(c语言实现)
- C语言完美实现动态数组代码分享
- 使用C语言实现vector动态数组的实例分享
- 【算法】C语言实现数组的动态分配
- C语言实现动态数组(以面向对象的编程风格)
- C语言中动态数组的实现
- C语言及程序设计提高例程-39 动态存储管理与动态数组的实现
- C语言中实现数组的动态增长
- c语言实现动态数组
- C语言中动态数组的实现
- 纯c语言实现动态分配多维数组的方法
- 可存放任意类型变量的动态数组--C语言实现
- 一维动态数组的实现(c语言)
- C语言队列动态数组实现
- C语言实现动态创建二位数组