首页 > 其他分享 >kx-00002-顺序表宏常量、结构体定义

kx-00002-顺序表宏常量、结构体定义

时间:2022-11-30 00:01:16浏览次数:46  
标签:brief param 表宏 mySList 00002 kx retval plist define

/**
* @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

相关文章