• 数据结构(顺序表)


    前沿:

        为了更好的提高我们的编程水平,数据结构是必不可少的,本节我来概述一下数据结构的顺序表。

    思维导图:

    目录

    一、线性表

    二、顺序表

    三、顺序表的代码实现

    四、顺序表实现增删查改


    一、线性表

    1.1   线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结 构,常见的线性表:顺序表、链表、栈、队列、字符串... 而首先我们要学习的是顺序表。

    1.2 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

    二、顺序表

    2.1 顺序表概念: 

        1. 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组 上完成数据的增删查改。

    2.2 顺序表的结构

    1. 静态顺序表:使用定长数组存储。
    2. 动态顺序表:使用动态开辟的数组存储。

    三、顺序表的代码实现

    3.1 顺序表的静态存储:

        ····静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多 了浪费,开少了不够用。所以现实生活中对与静态顺序表使用较少 ,大多使用的都是动态顺序表
    3.2 顺序表的动态存储:

    3.3 顺序表的初始化:3.4检查容量 :

    ······通过FindCapicity函数来检查容量是否已满 如果已经满了则需要进行2倍扩容。

    3.5顺序表的打印:

    ·····通过SeqListPrintf函数来实现我们数据的打印

     

    3.6顺序表的销毁:

    ·······当整个顺序表结束后要对他进行一个销毁 ,这里我们通过一个SeListDestory函数来进行实现这个功能吧。

    现在顺序表功能实现的前提工作我们都已经完成。接下来就是实现顺序表如何进行增删查改。

    四、顺序表实现增删查改

    4.1 顺序表的增删:

     4.1.1顺序表尾插: 

    这就可以在主函数里面进行测试了 ,写代码要养成一个习惯就是不能够一下子写完所有代码而是写一个代码块就进行测试。这里我们就可以进行一个初步的测试

    4.1.2 顺序表尾部删:

    同时进行测试  大家一定要养成测试的习惯呀。

    4.13 顺序表头插:

    大概的思路也很简单就是通过数组往后去一位最后留下首位置插入你添加的元素。 

    测试结果为:

    4.14 顺序表头删:

    他的思路就是和头插差不多就是通过后一位代替前一位实现

     测试结果为: 

     4.2 顺序表的查找:

    顺序表的查找有很多的方式暴力查找,二分查找等等。这里我运用的是暴力查找的方法,因为二分查找的一个条件需要你进行先排序,在查找。

    二分查找在查找很大数据的时候是优于暴力查找的但是这里我用的数据比较少所以用暴力查找的方法啦 他的实现方式为:

    测试结果为:        

    4.3顺序表在任意位置插入:

      这大概的思路都差不多呀,和首插的区别就在于首插的的下标是0,但任意位置插入的位置就不确定啦。 

    而代码的测试结果也很容易啦

     4.4顺序表在任意位置删除

    就不多讲啦看代码很容易就实现的。

     测试结果:

    到这里我们顺序表的所有功能就实现完啦!!

    总结:

    顺序表并不是特别的难,我们把顺序表当成数组就行啦,所以说顺序表的功能实现是很容易的。

    但顺序表也有很多的缺点,例如:

    1. 中间/头部的插入删除,时间复杂度为O(N)
    2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。
    3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200, 我们再继续插入了5个数据,后面没有数据插入了,那95个空间了。
    所以这些问题的解决需要我们通过链表来进行实现,下次我们来总结一下链表!!
    最后 孩子码文不易,希望能大家给个关注点赞,一同进步!!!!1
  • 相关阅读:
    2022年最新广西交安安全员考试题库及答案
    2024中国(北京)国际人工智能展览会(世亚智博会)
    汇编层面的函数调用
    命令行下Git调用IDEA的diff功能
    技术分享| 分布式系统中服务注册发现组件的原理及比较
    【Python 初学者】从零开始构建自己的神经网络
    STP介绍
    Scrum五大会议要怎么开?
    char *, char **,char a[] ,char *a[]啥啥分不清楚?
    23种设计模式(九)桥接模式(阁瑞钛伦特软件-九耶实训)
  • 原文地址:https://blog.csdn.net/m0_63177573/article/details/127731249