自学内容网 自学内容网

数据结构中的顺序表的删除和查找

  • 对于顺序表,它包括:初始化,取值,查找,插入,以及删除。接下来就讲一讲删除和查找。

  • 删除:它包括头删和尾删,为什么顺序表中要用到删除呢?按我的理解就是:为插入做准备的。如果不逍遥这个数就可以通过删除轻而易举的就删除掉了,如果想插入一个数,只需要删除那个数就可以插入进去了。

  • 头删:代码:
    //头删
    void SLPopFront(SL* ps)
    {
    assert(ps);
    assert(ps->size);
    
    //数据整体往前挪动一位
    //for循环
    
    for (int i = 0; i < ps->size - 1; i++)
    {
    ps->arr[i] = ps->arr[i + 1];
    }
    ps->size--;

    for循环是为了向前挪动一位的。ps->size--,就是数据个数减一。

  • 尾删:代码:

    //尾删
    
    void SLPopBack(SL* ps)
    {
    assert(ps);
    assert(ps->size);
    //顺序表不能为空
    --ps->size;
    }

    尾删就相对简单一点,

  • 头删,尾删都写好以后,那就是指定位置之前插入/删除数据,头两个只是随意删除的,而在指定位置之前插入/删除数据,就是对顺序表有利的代码:

    //在指定位置之前插入数据
    void SLInsert(SL * ps, int pos, SLDataType x)
    {
    assert(ps);
    assert(pos >= 0 && pos <= ps->size);
    //插入数据:空间够不够
    SLCheckCapacity(ps);
    //让pos及以后的数据整体往后挪动一位
    for (int i = ps->size; i > pos; i--)
    {
    ps->arr[i] = ps->arr[i - 1];
    }
    ps->arr[pos] = x;
    ps->size++;
    }

    在指定位置之前插入数据,要确保内存空间够不够。

  • 删除指定位置的数据:我们直接上代码为://删除指定位置的数据:
//删除指定位置的数据
void SLErase(SL* ps, int pos)
{
assert(ps);
assert(pos >= 0 && pos <= ps->size);
for (int i = pos; i < ps->size; i++)
{
ps->arr[i] = ps->arr[i + 1];
}
ps->size++;
}

  • 查找数据:这就比较好写了,则代码为:
    //查找
    int SLFind(SL* ps, SLDataType x)
    {
    assert(ps);
    for (int i = pos; i < ps->size; i++)
    {
    if (ps->arr[i] == x)
    {
    //找到了
    return 1;
    }
    }
    
    //没有找到
    return -1;
    
    }
    
    

    对于查找,只需要知道x在哪个位置,然后用for循环就可以了。

  • 对于顺序表,就是这么多的知识点。只要知道它的逻辑结构就可以了。如果你想看所有的代码,可以访问我的gitte哦

我的gitte是

(anhuijiangkun) - Gitee.comicon-default.png?t=N7T8https://gitee.com/anhuijiangkun


原文地址:https://blog.csdn.net/J15212630255/article/details/137752598

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!