一、公共头文件
#ifndef __MYHEAD_H__
#define __MYHEAD_H__
/******************************************************************
* @file :myhead.h
* @brief :公共头文件定义
* @details :常用的库文件包含,函数结果状态标志
* @author :kxwslmsps
* @email :
* @version :
* @date :2023-00-00
******************************************************************/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cassert>
/// @brief 定义函数返回值说明
#define OK 1 ///< OK:表示操作成功
#define ERROR 0 ///< ERROR:表示某结构不存在
#define TRUE 1 ///< TRUE:表示真
#define FALSE 0 ///< FALSE:表示假
#define ERR_PARA -1 ///< ERR_PARA:传入实参值不符合要求
#define ERR_OVERFLOW -2 ///< ERR_OVERFLOW:内存溢出
/// @brief 函数结果状态标志
typedef int status;
#endif
二、顺序表结构定义
#ifndef __MYSQLIST_H__
#define __MYSQLIST_H__
/******************************************************************
* @file :mySqList.h
* @brief :顺序表头文件定义
* @author :kxwslmsps
* @email :[email protected]
* @version :1.0
* @date :2023-01-014
******************************************************************/
#include "myhead.h"
#define INIT_SIZE 10 ///< 顺序表初始容量
typedef void(myOpFunType)(void*); ///< 定义操作函数类型
typedef int seqType; ///< 定义顺序表元素类型
/// @brief 顺序表结构定义
typedef struct t_sqList
{
seqType* pbase; ///< 表基址
int capacity; ///< 表容量
int size; ///< 表长度
}mySList;
/// @brief 初始化顺序表
/// @param[in] plist:表结构指针
/// @param[in] capacity:指定表初始化容量,若小于1,则为INIT_SIZE
/// @return status:返回初始化结果
/// @retval ERROR(0):顺序表不存在,不可操作
/// @retval OK(1):初始化成功
status sList_init(mySList* plist, int capacity);
/// @brief 清空顺序表
/// @param[in] plist:表结构指针
/// @return 无返回值
void sList_clear(mySList* plist);
/// @brief 销毁顺序表
/// @param[in] plist:表结构指针
/// @return 无返回值
void sList_destroy(mySList* plist);
/// @brief 打印顺序表
/// @param[in] plist:表结构指针
/// @param[in] opf:回调函数指针,指向具体的打印函数
/// @return 无返回值
void sList_output(const mySList* plist, myOpFunType* opf);
/// @brief 顺序表扩容
/// @param plist:表结构指针
/// @param inc:扩容inc个存储单元
/// @return 返回扩容结果
/// @retval OK(1):扩容成功
/// @retval ERROR(0):顺序表不存在,不可操作
/// @retval ERR_OVERFLOW(-2):扩容失败:申请堆空间失败导致
status sList_expand(mySList* plist, int inc);
/// @brief 将数组arr元素依次追加到顺序表表尾
/// @param plist:表结构指针
/// @param arr:数组首地址
/// @param n:数组元素个数
/// @return status:返回追加结果
/// @retval OK(1):追加成功
/// @retval ERROR(0):顺序表不存在,追加失败
/// @retval ERR_PARA(-1):追加失败:没有待追加的数组元素
/// @retval ERR_OVERFLOW(-2):追加失败:容量不足且扩容失败
status sList_append(mySList* plist, seqType* arr, int n);
/// @brief 在下标index处插入元素x
/// @param plist:表结构指针
/// @param index:元素插入的下标
/// @param x:待插元素
/// @return status:插入结果
/// @retval OK(1):插入成功
/// @retval ERROR(0):表结构不存在,插入失败
/// @retval ERR_PARA(-1):index范围不在[0,size],插入失败
/// @retval ERR_OVERFLOW(-2):插入失败:表满且扩容失败
status sList_insert(mySList* plist, int index, seqType x);
/// @brief 功能: 顺序表尾插法
/// @param[in] plist:表结构指针
/// @param[in] x:待插元素
/// @retval OK(1):插入成功
/// @retval ERROR(0):表结构不存在,插入失败
/// @retval ERR_OVERFLOW(-2):表满且扩容失败
status sList_push_back(mySList* plist, seqType x);
/// @brief 功能: 头插
/// @param[in] plist:表结构指针
/// @param[in] x:待插元素
/// @retval OK(1):插入成功
/// @retval ERROR(0):表结构不存在,插入失败
/// @retval ERR_OVERFLOW(-2):表满且扩容失败
status sList_push_front(mySList* plist, seqType x);
/// @brief 功能:删除index下标处的元素
/// @param[in] plist:表结构指针
/// @param[in] index:待删元素下标
/// @retval OK(1):删除成功
/// @retval ERROR(0):顺序表不存在,删除失败
/// @retval FALSE(0):表为空,删除失败
/// @retval ERR_PARA(-1):待删元素下标不在[0,size-]范围,删除失败
status sList_remove(mySList* plist, int index);
/// @brief 功能:顺序表尾删法 \n
/// @param[in] plist:表结构指针
/// @retval - OK(1):删除成功
/// @retval ERROR():顺序表不存在,不可操作
/// @retval FALSE(0):删除失败:表为空无须删除
status sList_pop_back(mySList* plist);
/// @brief 功能:顺序表头删法 \n
/// @param[in] plist:表结构指针
/// @retval OK(1):删除成功
/// @retval ERROR(0):顺序表不存在,删除失败
/// @retval FALSE(0):表为空,删除失败
status sList_pop_front(mySList* plist);
/// @brief 功能:定位元素x在顺序表中第一个下标,即下标值最小 \n
/// @param[in] plist:表结构指针
/// @param[in] x:待查找关键字
/// @retval ERROR(0):顺序表不存在,定位失败
/// @retval 非负整数值:x元素所在表中的下标,取值为[0,size-1]
status sList_locate(const mySList* plist, seqType x);
/// @brief 功能:查找元素值x是否在表中
/// @param[in] plist:表结构指针
/// @param[in] x:待查找关键字
/// @retval ERROR(0):顺序表不存在,查找失败
/// @retval TURE(1):x在表中
/// @retval FALSE(0):x不在表中
status sList_find(const mySList* plist, seqType x);
#endif //< !__MYSQLIST_H__
标签:status,顺序,brief,param,表头,kx,retval,plist
From: https://www.cnblogs.com/kxwslmsps/p/17123606.html