/** * @file mySList.h * @brief 顺序表头文件 * @details 声明了顺序表的各个实现函数 */ #ifndef __mySList_H__ #define __mySList_H__ #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<cstdlib> #include<cstring> #include<cassert> /** * @brief 功能: \n * @param[in] * @param[out] * @return 返回类型 * @retval - OK(1):操作成功 * @retval - ERROR(-1):不存在,不可操作 * @retval - TRUE(1):真 * @retval - FALSE(0):假 * @retval - OVERFLOW(-2):内存溢出 * @retval - ERR_PARA(-3):参数不符合要求 */ // OK:表示操作成功 #define OK 1 // ERROR:表示某结构不存在 #define ERROR -1 // TRUE:表示真 #define TRUE 1 // FALSE:表示假 #define FALSE 0 // OVERFLOW:内存溢出 #define OVERFLOW -2 // ERR_PARA:传入实参值不符合要求 #define ERR_PARA -3 // CAPACITY:初始容量 #define CAPACITY 10 // DOUBLE:一个倍数 #define DOUBLE 1.3 /** * @brief 定义函数返回值类型:int: \n * @retval - OK(1):操作成功 * @retval - ERROR(-1):错误,不可操作 * @retval - TRUE(1):真 * @retval - FALSE(0):假 * @retval - OVERFLOW(-2):内存溢出 * @retval - ERR_PARA(-3):参数不符合要求 */ typedef int status; /** * @brief 功能:定义操作函数类型 \n * @param[in] 函数的形参类型:void* * @return 函数的返回值类型:void */ typedef void(myOpFunType)(void* node); typedef int etype; // 元素数据类型 /** * @brief 可变长顺序表的表结构: \n * @param[in] etype* pbase:表基址 * @param[in] int capacity:表容量,init函数中表初始容量为CAPACITY,一般设为10 * @param[in] int size:表当前长度 */ typedef struct tag_seqList { etype* pbase; int capacity; int size; }mySList; /** * @brief 单链表结点结构: \n * @param[in] pnext:指针域 * @param[in] data:数据域 */ typedef struct tag_linkNode { struct tag_linkNode* pnext; etype data; }myLNode; /** * @brief 单链表结构: \n * @param myLNode* phead:链表结构的成员,表示链表的头结点实体 */ typedef struct tag_linkList { myLNode* phead; }myLinkList; /** * @brief 功能:初始化顺序表 \n * @param[in] plist:表结构指针 * @param[in] capacity:指定初始表容量 * @return status:返回初始化顺序表是否成功的结果状态标志 * @retval - OK(1):操作成功 * @retval - ERROR(-1):表结构不存在,不可操作 * @retval - OVERFLOW(-2):内存溢出 */ status sList_init(mySList* plist, int capacity); /** * @brief 功能:清空顺序表--将当前表长度置0,顺序其他成员不作改变 \n * @param[in] plist:表结构指针 */ void sList_clear(mySList* plist); /** * @brief 功能:销毁顺序表--释放堆上表元素空间,表成员置空或0 \n * @param[in] plist:表结构指针 */ void sList_destroy(mySList* plist); /** * @brief 功能:打印顺序表 \n * @param[in] plist:表结构指针 * @param[in] op:操作函数 */ void sList_output(const mySList* plist, myOpFunType* op); /** * @brief 功能: 获取表长\n * @param[in] plist:表结构指针 * @return 返回表元素个数 * @retval - 值-1:表结构不存在,不可操作 * @retval - 非负整数:表元素个数 */ int sList_size(const mySList* plist); /** * @brief 功能: 获取表容量\n * @param[in] plist:表结构指针 * @return 返回表容量 * @retval - 值-1:表结构不存在,不可操作 * @retval - 非负整数:表元素个数 */ int sList_capacity(const mySList* plist); /** * @brief 功能: 判空\n * @param[in] plist:表结构指针 * @return 返回表是否为空的结果状态标志 * @retval - ERROR(-1):表结构不存在,不可操作 * @retval - TRUE(1):表为空 * @retval - FALSE(0):表非空 */ status sList_epmty(const mySList* plist); /** * @brief 功能: 判满\n * @param[in] plist:表结构指针 * @return 返回表是否为满的结果状态标志 * @retval - ERROR(-1):表结构不存在,不可操作 * @retval - TRUE(1):表为满 * @retval - FALSE(0):表非满 */ status sList_full(const mySList* plist); /** * @brief 功能:扩容 \n * @param[in] plist:表结构指针 * @param[in] inc:在表当前容量capacity上扩容inc,令total=capacity+inc, * @param[in] inc:若total<capacity*DOUBLE,则令total=capacity*DOUBLE * @return status:返回初始化顺序表是否成功的结果状态标志 * @retval - OK(1):操作成功 * @retval - ERROR(-1):表结构不存在,不可操作 * @retval - OVERFLOW(-2):内存溢出 */ status sList_expand(mySList* plist, int inc); /** * @brief 功能: 在下标index处插入元素x\n * @param[in] plist:表结构指针 * @param[in] index:元素插入的下标 * @param[in] x:待插元素 * @return 返回是否成功插入的结果状态标志 * @retval - OK(1):插入成功 * @retval - ERROR(-1):表结构不存在,插入失败 * @retval - OVERFLOW(-2):表满且扩容失败,插入失败 * @retval - ERR_PARA(-3):index范围不在[0,size],插入失败 */ status sList_insert(mySList* plist, int index, etype x); /** * @brief 功能: 尾插\n * @param[in] plist:表结构指针 * @param[in] x:待插元素 * @return 返回是否成功插入的结果状态标志 * @retval - OK(1):插入成功 * @retval - ERROR(-1):表结构不存在,插入失败 * @retval - OVERFLOW(-2):表满且扩容失败,插入失败 */ status sList_push_back(mySList* plist, etype x); /** * @brief 功能: 头插\n * @param[in] plist:表结构指针 * @param[in] x:待插元素 * @return 返回是否成功插入的结果状态标志 * @retval - OK(1):插入成功 * @retval - ERROR(-1):表结构不存在,插入失败 * @retval - OVERFLOW(-2):表满且扩容失败,插入失败 */ status sList_push_front(mySList* plist, etype x); /** * @brief 功能:将数组arr元素逐个追加到表尾 \n * @param[in] plist:表结构指针 * @param[in] arr:数组 * @param[in] n:数组元素个数 * @return 返回是否成功追加的结果状态标志 * @retval - OK(1):追加成功 * @retval - ERROR(-1):顺序表不存在,追加失败 * @retval - OVERFLOW(-2):容量不足且扩容失败,追加失败 * @retval - ERR_PARA(-3):没有待追加的数组元素,追加失败 */ status sList_append(mySList* plist, etype arr[], int n); /** * @brief 功能:删除index下标处的元素 \n * @param[in] plist:表结构指针 * @param[in] index:待删元素下标 * @return 返回是否删除成功的状态标志 * @retval - OK(1):删除成功 * @retval - ERROR(-1):顺序表不存在,删除失败 * @retval - FALSE(0):表为空,删除失败 * @retval - ERR_PARA(-3):待删元素下标不在[0,size-]范围,删除失败 */ status sList_remove(mySList* plist, int index); /** * @brief 功能:尾删 \n * @param[in] plist:表结构指针 * @return 返回是否删除成功的状态标志 * @retval - OK(1):删除成功 * @retval - ERROR(-1):顺序表不存在,删除失败 * @retval - FALSE(0):表为空,删除失败 */ status sList_pop_back(mySList* plist); /** * @brief 功能:头删 \n * @param[in] plist:表结构指针 * @return 返回是否删除成功的状态标志 * @retval - OK(1):删除成功 * @retval - ERROR(-1):顺序表不存在,删除失败 * @retval - FALSE(0):表为空,删除失败 */ status sList_pop_front(mySList* plist); /** * @brief 功能:定位元素值key的下标 \n * @param[in] plist:表结构指针 * @param[in] key:待查找关键字 * @return 返回是否定位成功的结果状态标志 * @retval - ERROR(-1):顺序表不存在,定位失败 * @retval - 非负整数值:key元素所在表中的下标,取值为[0,size-1] */ status sList_locate(const mySList* plist, etype key); /** * @brief 功能:查找元素值key是否在表中 \n * @param[in] plist:表结构指针 * @param[in] key:待查找关键字 * @return 返回是否查找成功的结果状态标志 * @retval - ERROR(-1):顺序表不存在,查找失败 * @retval - TURE(1):key在表中 * @retval - FALSE(0):key不在表中 */ status sList_find(const mySList* plist, etype key); #endif // !__mySList_H__
标签:brief,param,表宏,mySList,00002,kx,retval,plist,define From: https://www.cnblogs.com/kxwslmsps/p/16937143.html