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

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

时间:2022-11-29 23:45:18浏览次数:44  
标签:brief param 00001 表宏 mySList 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>

// 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,00001,表宏,mySList,kx,retval,plist,define
From: https://www.cnblogs.com/kxwslmsps/p/16937117.html

相关文章

  • kx-00003-顺序表的实现
    顺序表公用的数据头文件请参考:https://www.cnblogs.com/kxwslmsps/p/16936975.html顺序表的结构体定义头文件请参考:https://www.cnblogs.com/kxwslmsps/p/16936985.html......
  • kx-00001-顺序表的数据头文件定义
    数据头文件定义:mydata.h1/**2*@filemydata.h3*@brief数据头文件4*@details定义了宏常量,函数返回值状态量,数据类型,操作函数类型5*/6#ifndef_......
  • kx-00002-顺序表的结构体定义
    1/**2*@filemystruct.h3*@brief各种数据结构的结构体定义4*@details定义了顺序表,单链表,循环单链表,双链表,循环双链表5*顺序栈,链栈,顺......
  • 拓端tecdat|python编程代写对网络图networkx进行社区检测和彩色绘图
    python对网络图networkx进行社区检测和彩色绘图 以下是创建图表,检测其中的社区,然后在少于10行的python中使用由其社区着色的节点进行可视化的方法......
  • 开源共建 | 中国移动冯江涛:ChunJun(原FlinkX)在数据入湖中的应用
    ChunJun(原FlinkX)是一个基于Flink提供易用、稳定、高效的批流统一的数据集成工具。2018年4月,秉承着开源共享的理念,数栈技术团队在github上开源了FlinkX,承蒙各位开发者的合......
  • 100001 求三角形面积已知底高
    <?phpheader('Content-Type:text/html;charset=utf-8');include'./assets/php/head.php';/***求三角形面积已知底高*已知底是30,高是20**/$val='3020';......
  • python中networkx学习(1)边和点
    importnetworkxasnxfrommatplotlibimportpyplotaspltG=nx.Graph(abb="pythondemo")#创建一个空图print(nx.Graph)#添加节点G.add_node("python")#生成一个以......
  • 白嫖永久服务器1668309600001
    阿贝云服务器注册免费领取1核1g内存5m宽带10g内存的云服务器,对于个人来说完全够用了。还有免费备案和虚拟主机,免备案对于搭建个人博客就很方便,部署了小项目上去,运行流畅不......
  • 元进Python(4)---networkx制作我最喜爱55部美剧天体排名
    利用networkx和matplotlib给我最喜爱的55部美剧来个天体排名【最终呈现效果】【代码实现及注释】importnetworkxasnximportmatplotlib.pyplotaspltUSTVNode=['Everybo......
  • 700001 TXT 公共课的书籍列表
    1、办公软件应用在人们日常学习和生活中,很多工作都离不开文字处理软件,常见的办公自动化软件有微软公司研发的基于Windows操作系统的MicrosoftOffice和金山软件公司研发......