2016-03-04 动态数组的实现方式

const int ARRAY_GROWUP = 10;


struct ArrayStruct
{
    int iMaxCount;
    int iCurCount;
    int *pHead;    
};

//初始化
ArrayStruct *Array_Init(int iStartCount)
{
    if(iStartCount <= 0)
        return NULL;
    ArrayStruct *pReturn;
    pReturn = new ArrayStruct;
    if(pReturn == NULL)
        return NULL;
    pReturn->pHead = new int[iStartCount];
    if(pReturn->pHead == NULL)
        return NULL;
    pReturn->iMaxCount = iStartCount;
    pReturn->iCurCount = 0;
    
    return pReturn;    
}

//插入元素
bool Array_AddElement(ArrayStruct *pArray,const int iAppendElement)
{
    if(pArray == NULL)
        return false;


    if(pArray->iCurCount == pArray->iMaxCount)
    {
        //增加内存 
        int *Temp = new int[(pArray->iMaxCount + ARRAY_GROWUP)];
        for(int i = 0;i<pArray->iCurCount;i++)
        {
            Temp[i] = pArray->pHead[i];    
        }
        delete []pArray->pHead;
        pArray->pHead = Temp;
        pArray->iMaxCount = pArray->iMaxCount + ARRAY_GROWUP;  
    }
    
    pArray->pHead[pArray->iCurCount] = iAppendElement;
    pArray->iCurCount++;
    return true;    
}

//删除元素
bool Array_RemoveElement(ArrayStruct *pArray,const int iRemoveIndex)
{
    if(pArray == NULL)
        return false;
    if(iRemoveIndex > pArray->iCurCount)
        return false;
    
    for(int i = iRemoveIndex-1;i<=pArray->iCurCount;i++)
    {
        pArray->pHead[i] = pArray->pHead[i+1];    
    }
    pArray->iCurCount--;
    return true;    
}

//获取元素
bool Array_GetElement(const ArrayStruct *pArray,const int iIndex,int &iReturn)
{
    cout<<pArray->iCurCount<<endl;
    if(pArray == NULL)
        return false;
    if(iIndex > pArray->iCurCount)
        return false;


    iReturn = pArray->pHead[iIndex];
    return true;    
}


//删除动态数组
void Array_Release(ArrayStruct *pArray)
{
    if(pArray == NULL)
        return;
    delete []pArray->pHead;
    pArray->pHead = NULL;
    pArray->iMaxCount = 0;
    pArray->iCurCount = 0;
    pArray = NULL;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值