kx-000010-顺序表-表尾追加元素()-其他
kx-000010-顺序表-表尾追加元素()
- 顺序表结构体定义。具体的结构体定义请查看头文件:https://www.cnblogs.com/kxwslmsps/p/16937235.html
typedef status int; // 定义函数结果状态
typedef int etype; // 元素数据类型
#define CAPACITY 10 // 定义初始容量typedef struct tag_seqList
{
etype* pbase; //< 表基址 int capacity; //< 表容量 int size; //< 表长度 }mySList;
typedef status int; // 定义函数结果状态
typedef int etype; // 元素数据类型
#define CAPACITY 10 // 定义初始容量
typedef struct tag_seqList
{
etype* pbase; //< 表基址
int capacity; //< 表容量
int size; //< 表长度
}mySList;
- 表尾追加元素
/**
* @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 pdata[], int n)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (n < 1||pdata==NULL) { return ERR_PARA; } int inc = plist->size + n – plist->capacity;
if (inc > 0 && (OK != sList_expand(plist, inc)))
{
return OVERFLOW;
}
for (int i = 0; i < n; ++i) { plist->pbase[i + plist->size] = pdata[i];
}
plist->size += n;
return OK;
}
/**
* @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 pdata[], int n)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (n < 1||pdata==NULL)
{
return ERR_PARA;
}
int inc = plist->size + n - plist->capacity;
if (inc > 0 && (OK != sList_expand(plist, inc)))
{
return OVERFLOW;
}
for (int i = 0; i < n; ++i)
{
plist->pbase[i + plist->size] = pdata[i];
}
plist->size += n;
return OK;
}
- 顺序表结构体定义。具体的结构体定义请查看头文件:https://www.cnblogs.com/kxwslmsps/p/16937235.html
typedef status int; // 定义函数结果状态
typedef int etype; // 元素数据类型
#define CAPACITY 10 // 定义初始容量typedef struct tag_seqList
{
etype* pbase; //< 表基址 int capacity; //< 表容量 int size; //< 表长度 }mySList;
typedef status int; // 定义函数结果状态
typedef int etype; // 元素数据类型
#define CAPACITY 10 // 定义初始容量
typedef struct tag_seqList
{
etype* pbase; //< 表基址
int capacity; //< 表容量
int size; //< 表长度
}mySList;
- 表尾追加元素
/**
* @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 pdata[], int n)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (n < 1||pdata==NULL) { return ERR_PARA; } int inc = plist->size + n – plist->capacity;
if (inc > 0 && (OK != sList_expand(plist, inc)))
{
return OVERFLOW;
}
for (int i = 0; i < n; ++i) { plist->pbase[i + plist->size] = pdata[i];
}
plist->size += n;
return OK;
}
/**
* @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 pdata[], int n)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (n < 1||pdata==NULL)
{
return ERR_PARA;
}
int inc = plist->size + n - plist->capacity;
if (inc > 0 && (OK != sList_expand(plist, inc)))
{
return OVERFLOW;
}
for (int i = 0; i < n; ++i)
{
plist->pbase[i + plist->size] = pdata[i];
}
plist->size += n;
return OK;
}