首页 > 其他分享 >kx00005-顺序表--扩容

kx00005-顺序表--扩容

时间:2023-02-10 01:33:04浏览次数:53  
标签:扩容 顺序 capacity -- kx00005 int plist inc

一、顺序表结构定义

#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

相关文章

  • 彻底掌握 MySQL InnoDB 的锁机制
    本文是对沈剑大佬锁机制十多篇文章的概括总结,文末有全部链接,还参考了10多位其他网友的优秀分享。1、概要MySQL中的锁可以按照粒度分为锁定整个表的表级锁(table-le......
  • 重磅发布丨《云原生实战指南》助力企业上云实践!
    云原生已经变成非常流行的技术趋势,从上云到用云,云原生通过全面容器化、核心技术互联网化和应用Serverless化三大范式,帮助企业解决应用构建的一系列问题,让应用更敏捷,助力企......
  • Gateway 网关 之 自定义断言
    自定义 PredicateFactory可以定义针对于 Router的 Predicate。注意:1、类名必须叫做XxxRoutePredicateFactory.注入到Spring容器后使用时的名称就叫做Xxx。2、类必......
  • malloc、calloc和realloc的区别
    1.malloc函数使用方法:参数是所需申请的内存块的字节数,返回指向申请的内存块的首地址的无类型指针,malloc申请的内存块是未初始化的。函数原型:void*malloc(size_tnum_s......
  • 百度 测开 面经
    百度测开开发测试工程师提前批一二三面面经事业群:MEGbase:北京一面:2022.8.12时长:50min自我介绍1.个人项目,我的项目是围绕着学校课程的项目来的,面试官就让我介绍这门课......
  • chatGPT对未来五年测试行业的看法
    chatGPT回答未来五年我们测试发展的方向问题:未来五年测试行业发展怎么样回答如下:预测未来五年测试行业的发展趋势是有困难的,但是一般认为,测试行业将继续发展,因为软件行......
  • Codeforces Round #717 (Div. 2)
    D:连续区间内lcm=积也就是gcd=1所以可以分解质因子对每个数先找到它后面离他最近的有相同质因子的数的位置用桶更新然后考虑怎么快速弄出整个区间因为划分是固......
  • 庐陵乡土“订婚”文化简记
    成长于乡村的我,对农村及其承载的传统文化一直很好奇。很多时候也和别人说过,如果能够不受限的选择专业,或许我会选择社科类的专业,研究中国各地的乡土文化(想起了高中时看的《......
  • 手机常用应用
    对象应用用途每天都用微信(工作信息)支付宝(日常消费)美团(外卖、骑车、团购)京北方EDM(打卡)  笔记obsidian工作、学习纯纯写作日记英语词典有......
  • 应用纳管和灰度发布:谐云基于 KubeVela 的企业级云原生实践
    以下文章来源于谐云科技 ,作者陈炜舜在OAM最早推出时,谐云就参与其中,并基于社区中oam-kubernetes-runtime项目二次开发,以满足容器云产品中OAM应用模型的功能需求。......