数据结构------顺序表24/7/19

顺序表删除

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);
}

看再多遍都不如自己写一遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值