顺序表删除
int DeleteSqList(s_t *list, int local){
//先判断顺序表是否存在,list地址为NULL则表示顺序表存储空间无效
if(list == NULL)
return -1;
//判断是否为空表
if(list->last == -1)
return -1;
//判断删除位置是否合法
if(local < 0 || local > list->last)
return -1;
//删除数据元素
for(int i = local; i < list->last; i++)//思考为什么不用等于list->last
list->data[i] = list->data[i + 1];
list->last--;
return 0;
}
顺序表查询数据元素(查询指定位置的数据元素)
int SearchSqList(s_t *list, int local, data_t *mydata){
if(list == NULL)
return -1;
if(list->last == -1)
return -1;
if(local < 0 || local > list->last)
return -1;
//查找元素
*mydata = list->data[local];
return 0;
}
顺序表修改元素
int ChangeSqList(s_t *list, int local, data_t newdata){
if(list == NULL)
return -1;
if(list->last == -1)
return -1;
if(local < 0 || local > list->last)
return -1;
//修改元素值
list->data[local] = newdata;
return 0;
}
顺序表的清空
void ClearSqList(s_t *list){
if(list == NULL)
return -1;
list->last = -1;
}
删除(释放)顺序表
顺序表资源释放的函数接口定义,参数使用二级指针,实现在空间释放后,将使用者(main函数中顺序表的地址值设置为NULL),从而避免野指针的出现
代码:
void DestorySqList(s_t **list){
if(list == NULL)
return -1;
free(*list);//释放所开辟的顺序表存储空间
*list == NULL;
}
函数的声明:
void DestorySqList(s_t **list);
统计顺序表中的元素个数
int LengthSqList(s_t *list){
if(list == NULL)
return -1;
return (list->last + 1);
}
判断顺序表是否为空
int isEmptySqList(s_t *list){
#if 0 //#是gcc编译符,如果为真编译if下的语句
if(list->last == -1)
return 1;
else
return 0;
#else //如果为假,编译else下的语句
return (list->last == -1);
#endif
}
判断顺序表是否为满表
int isFillSqList(s_t *list){
return (list->last == NUM - 1);
}
看再多遍都不如自己写一遍