线性结构——顺序表

顺序表:顺序表其实就是数组(一般作为接口(类似于函数)放在头文件中)

实现静态顺序表:  size为有效数组,有效数组在顺序表中必须是连续的

               下图其实很挫:因为类型被卡死了,想要改成char型非常麻烦

                             技巧:用宏来定义 常数,用typedef来定义类型

                   

       

 正常定义:

注意:静态顺序表是很挫的(它不能实现按需索取,这里相当于一个精致包装的数组)

动态顺序表:

       结构:

              

        

      注意:

       1.     这些size(有效数据个数),acpicity(空间容量)只是一个”显示“的作用

               真正的实现要靠内部[ size++ , malloc ,  realloc     ]等

        2.     capicity是(空间容量是有多少个该类型的数据的意思)而不是多少字节。    

               因此一般都要用sizeof( 类型 ) * capicity 来初始化或增容或扩容 

       3.     顺序表的实现在2024-03-01文件中

       4.     注意:顺序表(数组类结构)不用free删除数据,而是直接操纵size--。

                        是吃了数组(物理连续)下标的红利。这些空间永远容易找到。

      命名习惯:

                     序:sequence(顺序)               顺序表表头删除:

                     表: list(表格)                                                  seqlistpopfront

                     后:back(  返回  )

                     前:front(正面)                     顺序表表尾插入:

           中间插入:insert(插入)                                               seqlistpushback

(前,后) 插入:push(推动)

                  删除:pop ( 爆掉了 )  | |  erase(计算机删除)               

               初始化:initialization( 初始化 ,简称init   )

                   

举例一反三:

      我们知道删除操作在这里就是移动覆盖,这就是数组这个物理连续条件的好处

      所以,在有数组这一类型的条件下(覆盖删除是一个常见的操作)

注意:在覆盖过程中,有时,一个元素要重复移动多次造成亢余

          我们不妨从前往后移动或者从后往前移动(换覆盖的方向

顺序表的优缺点:

 缺点:

               插入数据时,因为要移动所以,时间复杂度为O(N)

               增容操作(一般增容两倍)还是可能浪费空间

  优点:

             物理连续的优势:

                                顺序表在物理上是连续的,物理上连续有了这个条件,排序,二分

                                查找,指定下标访问等(也叫随机访问)就不是什么难事

           支持随机访问的优势:

                               1.快速访问元素,不用像链表一样还要找的来

                                             

               顺序表的尾插,尾删非常的快

       对比与链表:顺序表的缓存命中率高.

              缓存预加载概念:{访问数据时不会只加                    (从内存中到缓存中)     

              载一个数据到缓存,而是从这个数据开始后的一段数据加入到缓存(预判加

              载), 缓存的访问速度是比内存快的}

              由于顺序表物理空间连续,预加载的效果更好(有效数据更多)

              由于链表物理空间不连续,预加载的效果不好(有效数据少,还会造成缓存

                                                                                    污染

              

                                      

                                 

               这是计算机体系结构的知识:有兴趣可以看看《深入理解计算机系统》

                                                           这本书非常难,可以尝试一下fdf的版本

                   

                                                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值