顺序表最基本概念入门2(实现顺序表特定位置之前的插入和删除)

知识特点:

顺序表专题中第一篇是实现了顺序表基本的插入和删除,这一篇将继续为大家讲解顺序表特定位置之前的插入和删除。

还是建议大家先把合集第一篇看完再继续学习

1.特定位置插入/删除

1.1头文件创建方法

void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);
int SLFind(SL* ps, SLDataType x);

1.2在指定位置之前插入数据

源文件实现:

void SLInsert(SL* ps, int pos, SLDataType x);//pos指定插入的位置下标
{
    assert(ps);

//顺序表地址不能为空,今天出的指针3合集里有讲
 //pos不能是任意的整数
 // pos一定>=0,顺序表对应的下标,下标不能小于0(左区间)
    assert(pos >= 0 && pos <= size);

//小于等于有效数据个数

 //插入数据:检测空间够不
    SLCheckCapacity(ps);

//顺序表合集1已经讲解这个函数的封装,用来判断空间是否够

 //插入了一个数之后,需要让pose和之后数据都要同一向后移(并且是最后一个先往后移动)
    for (int i = size; i > pos; i--)
    {
        ps->arr[i] = ps->arr[i-1];
    }
    ps->arr[pos] = x;
    ps->size++;
}

测试:

void SLTest02()
{
    SL sl;
    SLInit(&sl);
    //测试尾插
    SLPushBack(&sl, 1);
    SLPushBack(&sl, 2);
    SLPushBack(&sl, 3);
    SLPushBack(&sl, 4);
    //测定指定位置前插入
    SLInsert(&sl, 0, 99);
    SLPrint(sl);//插入完打印
    SLDestroy;
}


int main()
{
    SLTest02();//写一个测试函数
    //SLTest01();//写一个测试函数
    return 0;
}
 

1.3 在指定位置之前删除数据

 

实现源码:

void SLErase(SL* ps, int pos);
{
    assert(ps);//顺序表不能为空
    assert(pose >= 0 && pos < ps->size);
    for (int i = pos;i<size-1; i++)
    {
        ps->arr[i] = ps->arr[i + 1];
    }
    ps->size--;
}

测试: 

void SLTest02()
{
    SL sl;
    SLInit(&sl);
    //测试尾插
    SLPushBack(&sl, 1);
    SLPushBack(&sl, 2);
    SLPushBack(&sl, 3);
    SLPushBack(&sl, 4);
    //测定指定位置前插入
    /*SLInsert(&sl, 0, 99);*/
    //测试删除指定位置数据


    SLErase(&sl, 0);
    SLPrint(sl);
    SLDestroy(&sl);
}


int main()
{
    SLTest02();//写一个测试函数
    //SLTest01();//写一个测试函数
    return 0;
}
 

完—— 

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值