数据结构学习系列之顺序表的两种删除方式

  • 方式1:
  • 在顺序表的末端删除所存储的数据元素,代码如下:
  • 示例代码:
int delete_seq_list_1(list_t *seq_list){
    
    

    if(NULL == seq_list){
    
    

        printf("入参为NULL\n");

        return -1;

    }
    if(0 == seq_list->count){
    
    

        printf("顺序表为空,删除失败\n");

        return -1;
    }
    seq_list->count--;

    return 0;
}
  • 注意事项:

  • 1.形参传入到具有删除数据元素功能的函数后,需要做入参合理性检查

  • 2.还需要判断此时顺序表所存储的数据元素是否为空

  • 3.count是计数的变量每次删除一个数据元素后,需要减1,此处易忽略

  • 方式2:

  • 在顺序表的任意位置删除数据元素,代码如下:

  • 示例代码:

int delete_seq_list_2(list_t *seq_list,int pos){
    
    

    if(NULL == seq_list){
    
    

        printf("入参为NULL\n");

        return -1;

    }
    if(0 == seq_list->count){
    
    

        printf("顺序表为空,删除失败\n");

        return -1;
    }

     if( pos < 0 || pos >= seq_list->count){
    
    

        printf("删除位置不合理,删除失败\n");

        return -1;

    }

    int i = pos;

    while(i < seq_list->count-1){
    
    

        seq_list->a[i] = seq_list->a[i+1];

        i++;

    }

    seq_list->count--;

    return 0;

}
  • 注意事项:
  • 1.同方式1:形参传入到具有删除数据元素功能的函数后,需要做入参合理性检查
  • 2.也同方式1:还需要判断此时顺序表所存储的数据元素是否为空
  • 3.判断所要删除数据元素的位置在顺序表中是否合理,一定要区别在任意位置插入数据元素的位置合理性检查,两者略有不同,防止越界操作,所导致运行结果出错
  • 4.可以采用while循环或者for循环的方式找到所要删除数据元素的位置后,此位置之后的所有数据元素,依次向前挪动一个位置,目的是删除所指定的待删除位置
  • 5.删除所指定位置的数据元素后,记得count减1

猜你喜欢

转载自blog.csdn.net/qq_41878292/article/details/132640671
今日推荐