数据结构与算法学习笔记(第二章 线性表)

记一些第一次学习的时候不知道或者理解有偏差的东西吧

  • 记住下面这张表
    在这里插入图片描述
  • 关于顺序表元素存储位置的计算
    先举个例子:如果每个元素占用8个单元,ai的存储位置是2000单元,则ai+1的存储位置是:?
    答案:2008单元。(别理解错了,让你求的是存储位置不是下标!!!)
    抛砖引玉:所有数据元素的存储位置均可由第一个元素的存储位置得到(“由第i个元素的存储位置得到”这里推得的):
    LOC(ai)=LOC(a1)+(i-1)×L,L是占用的单元量。该运算时间复杂度是O(1)。这个公式体现了随机存取的概念(可以获得任何一个元素的存储位置(地址)!)LOC(a1)称为基地址。这也是顺序表的优点
  • 符号常量——#define宏定义的对象,const定义的对象都称为符号常量
    #define MAX_SIZE=100;数组定义可以包含符号常量但不可以有变量!
  • 关于顺序表中结构体定义的思考
    在这里插入图片描述
    这里有个结构体里定义了个存储空间的基地址。

在这里插入图片描述
这是对于该定义的解释。我们进行动态存储分配。先定义一个指针,指针可以作为数组基地址(此时还不是),然后你用new或者malloc分配动态存储空间然后赋给SqList.elem,这里elem指针就真正能作为数组基地址了,然后你可以找其他存储空间的地址了。这样看起来更灵活一些啦!

  • 关于ElemType(一般结构体里出现),这个东西在实现的时候改成你需要的数据类型即可,或者,你在函数,结构体外写一个如typedef char(或者int) ElemType;,也可以。
  • 类C语言可以参杂C++的一些语法,怎么方便怎么来。
  • 数组逻辑位序(0、1、2、3…)和物理位序(1、2、3、4…)差1,这个很关键,涉及到算法如何描述数组中的元素位置。
  • ASL公式的Pi,这么理解,因为随机查找,因此我想查找每一个元素的概率(几率)为Pi,然后再✖需要查找的次数(因算法而异),就能算出ASL(平均查找长度(平均时间复杂度))了。(ASL=ΣPiCi,其中Σ下是i=1,上是n)实际上ASL像概率论里的期望值E(X)。我们也会在计算其他算法中用到ASL的公式,来计算其他算法的平均时间复杂度了。
    顺序表(顺序查找)的ASL=(n+1)/2,即顺序查找的时间复杂度为O(n)
  • 写算法要多考虑异常处理,鲁棒性要好
  • 写顺序表插入算法的时候,以从最后一个元素到插入位置的原元素依次往后放的思想(删除相反,删除是从第i个删除元素到第n(线性表表长)-1个元素依次前移)来写,这样你计算时间复杂度根据ASL公式也好算&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值