kx-000011-按位置删除元素,remove()-其他
kx-000011-按位置删除元素,remove()
- 顺序表结构体定义。具体的结构体定义请查看头文件: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 功能:删除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)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (plist->size == 0)
{
return FALSE;
}// 表空,不可删除
if (index<0 || index>plist->size – 1)
{
return ERR_PARA;
}// index参数不符合要求
for (int i = index + 1; i < plist->size; ++i)
{
plist->pbase[i – 1] = plist->pbase[i];
}// i的含义是被移动元素的下标范围[pos+1,size-1]
plist->size–;
return OK;
}
/**
* @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)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (plist->size == 0)
{
return FALSE;
}// 表空,不可删除
if (index<0 || index>plist->size - 1)
{
return ERR_PARA;
}// index参数不符合要求
for (int i = index + 1; i < plist->size; ++i)
{
plist->pbase[i - 1] = plist->pbase[i];
}// i的含义是被移动元素的下标范围[pos+1,size-1]
plist->size--;
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 功能:删除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)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (plist->size == 0)
{
return FALSE;
}// 表空,不可删除
if (index<0 || index>plist->size – 1)
{
return ERR_PARA;
}// index参数不符合要求
for (int i = index + 1; i < plist->size; ++i)
{
plist->pbase[i – 1] = plist->pbase[i];
}// i的含义是被移动元素的下标范围[pos+1,size-1]
plist->size–;
return OK;
}
/**
* @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)
{
if (plist == NULL || plist->pbase == NULL)
{
return ERROR;
}
if (plist->size == 0)
{
return FALSE;
}// 表空,不可删除
if (index<0 || index>plist->size - 1)
{
return ERR_PARA;
}// index参数不符合要求
for (int i = index + 1; i < plist->size; ++i)
{
plist->pbase[i - 1] = plist->pbase[i];
}// i的含义是被移动元素的下标范围[pos+1,size-1]
plist->size--;
return OK;
}