一、定义顺序表结构
#define INIT_SIZE 10 ///< 顺序表初始容量
typedef int seqType; ///< 定义顺序表元素类型
/// @brief 顺序表结构定义
typedef struct t_sqList
{
seqType* pbase; ///< 表基址
int capacity; ///< 表容量
int size; ///< 表长度
}mySList;
二、扩容函数
1、思路
2、代码
/// @brief 顺序表扩容
/// @param plist:表结构指针
/// @param inc:扩容inc个存储单元
/// @return 返回扩容结果
/// @retval OK(1):扩容成功
/// @retval ERROR(0):顺序表不存在,不可操作
/// @retval ERR_OVERFLOW(-2):扩容失败:申请堆空间失败导致/
status sList_expand(mySList* plist, int inc)
{
if (NULL == plist || NULL == plist->pbase)
{
return ERROR;
}
/// 设定基本扩容最小倍数为原容量的1.5倍,扩容后预估新容量为 newCap
int newCap = plist->capacity * 1.5;
/// 传入实参扩容量inc后,预估新容量为 inCap
int inCap = plist->capacity + inc;
/// 实际扩容后,顺序表新容量
int realCap = (inCap < newCap) ? newCap : inCap;
seqType* pNew = NULL;
pNew = (seqType*)realloc(plist->pbase, sizeof(seqType) * realCap);
if (NULL == pNew)
{
return ERR_OVERFLOW;
}
plist->pbase = pNew;
plist->capacity = realCap;
return OK;
}
标签:扩容,顺序,int,seqType,kx,plist,inc
From: https://www.cnblogs.com/kxwslmsps/p/17123840.html