• 顺序表与链表(下)


    目录

    引言

    查找接口

    固定位置插入接口

    固定位置删除接口

    修改接口


    引言

    在顺序表与链表(上),我们讲了什么是线性表、顺序表和链表,以及重点讲了 顺序表的几个接口:顺序表初始化、销毁、头增尾增,头删尾删。

    在(下)中,我们讲顺序表的剩余几个接口:查找、固定位置插入、固定位置删除、修改。

    查找接口:

    查找接口非常简单,只需要遍历顺序表找到对应数据就行了。

    代码如下:

    1. //test.c
    2. int ret = SeqFind(&s, 3);
    3. printf("\n%d\n", ret);
    4. //Seqlist.c
    5. int SeqFind(SEQ* pq, SeqDateType x)
    6. {
    7. assert(pq);
    8. for (int i = 0; i < pq->size; ++i)
    9. {
    10. if (pq->a[i] == x)
    11. {
    12. return i;
    13. }
    14. }
    15. return -1;
    16. }

    注意这里返回类型是int,找到了对应数据返回的数据的下标,没找到就return -1;

    打印出来观察结果。

    固定位置插入接口:

    与头插尾插不同的是,需要传参给定插入的位置,注意给定的是下标。

    其他地方与头插相似,只是要注意挪动数组的起始位置变成了插入位置pos

    代码如下:

    1. /SeqList.c
    2. void SeqInsert(SEQ* pq, int pos, int x)
    3. {
    4. assert(pq);
    5. assert(pos >= 0 && pos < pq->size - 1);
    6. SeqCheckFull(pq);
    7. int end = pq->size - 1;
    8. while (end >= pos)
    9. {
    10. pq->a[end + 1] = pq->a[end];
    11. end--;
    12. }
    13. pq->a[pos] = x;
    14. pq->size++;
    15. }

    固定位置删除接口:

    较之插入相对容易,也是一样注意删除位置以及挪动数组起始位置改变就行了。

    代码如下:

    1. void SeqErase(SEQ* pq, int pos)
    2. {
    3. assert(pq);
    4. assert(pos >= 0 && pos < pq->size - 1);
    5. int begin = pos;
    6. while (begin < pq->size - 1)
    7. {
    8. pq->a[begin] = pq->a[begin + 1];
    9. begin++;
    10. }
    11. pq->size--;
    12. }

    可以发现,固定位置插入、删除较之之前说的头插头删,尾插尾删有更广泛的特点。

    可以在头上插入、中间插入,也可以尾部插入,删除也一样,所以上面的头插头删,尾插尾删代码也可以相应的更改为这种普遍的方法,直接调用下面的固定插入、删除函数就行了。

    在这里就不赘述了,相信大家自己也很清楚了。

    修改接口:

    这也是非常容易的,无非就是给个下标,修改对应数据。

    代码如下:

    1. void SeqModify(SEQ* pq, int pos, int x)
    2. {
    3. assert(pq);
    4. assert(pos >= 0 && pos < pq->size - 1);
    5. pq->a[pos] = x;
    6. }

    链表内容相对较多,放到之后再说吧。祝大家万事顺遂!!

  • 相关阅读:
    uml学习笔记
    MySQL 5.7 安装教程(全步骤、保姆级教程)
    347. 前 K 个高频元素——大顶堆、小顶堆
    初识设计模式 - 备忘录模式
    如何用SQL语句创建数据库
    python神经网络实现手写数字识别实验
    CTFshow web66 67 68 69 70 71 72
    [单片机框架][bsp层][N32G4FR][bsp_gpio] GPIO配置和使用
    厉害,腾讯技术专家手撸Redis技术笔记,下载量已突破30W
    Spring MVC的执行流程
  • 原文地址:https://blog.csdn.net/SAKURAjinx/article/details/125546752