一、顺序表结构定义
#define INIT_SIZE 10 // 顺序表初始容量
typedef void(myOpFunType)(void*); // 定义操作函数类型
typedef int seqType; // 定义顺序表元素类型
// 定义顺序表结构体
typedef struct t_sqList
{
seqType* pbase; // 表基址
int capacity; // 表容量
int size; // 表长度
}mySList;
二、顺序表扩容函数
/**
************************************************************************
* @brief 功能:顺序表扩容 \n
* @param[in] plist:表结构指针
* @param[in] inc:输入参数inc,要求为顺序表扩容inc个单元
* @param[in] inc:扩容后仍小于realCap=plist->capacity*1.3,则扩容为realCap
* @retval OK(1):扩容成功
* @retval ERROR(0):表结构不存在,不可操作
* @retval OVERFLOW(-2):扩容失败:申请堆空间失败导致
************************************************************************
*/
status sList_expand(mySList* plist, int inc)
{
if (NULL == plist || NULL == plist->pbase)
{
return ERROR;
}
// 设定基本扩容最小倍数为原容量的1.3倍,扩容后预估新容量为 newCap
int newCap = plist->capacity * 1.3;
// 传入实参扩容量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 OVERFLOW;
}
plist->pbase = pNew;
plist->capacity = realCap;
return OK;
}
标签:扩容,顺序,capacity,--,kx00005,int,plist,inc From: https://www.cnblogs.com/kxwslmsps/p/17107616.html