首页 > 其他分享 >kx-顺序表:顺序表头文件定义

kx-顺序表:顺序表头文件定义

时间:2023-02-15 16:44:58浏览次数:49  
标签:status 顺序 brief param 表头 kx retval plist

一、公共头文件

#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

相关文章

  • 数据结构与算法-第01章:顺序表-实现
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • Java main方法所在类初始化顺序
    目录1、main方法特性2、与所在类的关系1、main方法特性访问权限是publicmain()是static静态,因此如果在main方法中调用本类的其他方法也必须是静态方法,否则需要先实例化......
  • java 按照自定义顺序枚举实体类的属性值
    工具类/***按照字段顺序进行拼接**@paramobj对象,需要在字段上添加FieldOrder注解*@paramfix拼接符号*@param<T>*@ret......
  • HTML 表格表头
    HTML表格表头表格的表头使用<th>标签进行定义。大多数浏览器会把表头显示为粗体居中的文本:https://www.81rz.com/zjxt101/实例<tableborder="1"><tr><th>Heade......
  • 顺序表:合并2个非递减顺序表
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • 顺序表:删除顺序表中值等于x的所有元素
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • 顺序表:删除表尾元素
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • 顺序表:删除顺序表第一个元素
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • 顺序表:查找元素x在顺序表中的下标,即定位函数
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • 顺序表:查找元素x是否存在于顺序表中,即查找函数
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......