算法与数据结构 --- 线性表 --- 顺序表示和实现

 第一部分 --- 线性表的定义和特点

算法与数据结构 --- 线性表 --- 顺序表示和实现_第1张图片

 

 算法与数据结构 --- 线性表 --- 顺序表示和实现_第2张图片

 

 


补充部分 --- 线性表案例讲解

 算法与数据结构 --- 线性表 --- 顺序表示和实现_第3张图片

 算法与数据结构 --- 线性表 --- 顺序表示和实现_第4张图片

 遇到为0的项数直接取消链接,而不需要我们专门空一个位置出来


第二部分 --- 线性表的类型定义 算法与数据结构 --- 线性表 --- 顺序表示和实现_第5张图片

 list是线性表的英文名字,Elemset算法与数据结构 --- 线性表 --- 顺序表示和实现_第6张图片

1. initialization 初始化

2.销毁线性表的本质是将线性表从内存中删除

3.置为空表的意思是将线性表中的元素全都删除算法与数据结构 --- 线性表 --- 顺序表示和实现_第7张图片

 

1.数据元素判断函数的返回值类型是bool类型,当函数返回一个 true 时表示函数满足,返回一个false 时表示函数不满足

2.这个函数会将我们传进来的 e 作为左参数,同时将 线性表中的每个元素依次作为右参数,左右参数进行比较,右参数依次变换,直到返回true为止,若比完了最后一个元素后仍无true则结束

 算法与数据结构 --- 线性表 --- 顺序表示和实现_第8张图片

 

1.Traverse:遍历 


第三部分 --- 线性表的顺序表示和实现(1,2)

1.对于顺序结构存储,不仅要在内存空间中按照顺序来存,而且要占用一片连续的内存空间来存

 

1.占用了一片连续的内存空间的话会有一个很大的好处,就是当我们知道了内存空间中的一个元素的时候我们可以通过它推算出其它元素的存储位置。

 1.存储位置是2000单元,然后共占据8个单元,于是从2000开始算一个,往后数七个到2007单元存储结束

 1.下面这个列表的形式就是用来解决叔祖不可动态变化大小的方法

算法与数据结构 --- 线性表 --- 顺序表示和实现_第9张图片

1.通过上面这个SqList结构体类型我们就可以创建一个数组,在这个结构体类型中的指针指向的是我们在堆区中开辟的动态数组的首元素的地址


第四部分 --- 线性表的顺序表示和实现(3,4)

 对于逻辑位序,每个元素都是从0开始编号的,对于物理位序,每个元素则是从1开始编号的

1.创建一个线性表

2.在堆区中为线性表开辟动态数组空间

3.设置好数组的长度 --- length 算法与数据结构 --- 线性表 --- 顺序表示和实现_第10张图片

1.infeasible : 不可行的算法与数据结构 --- 线性表 --- 顺序表示和实现_第11张图片

 算法与数据结构 --- 线性表 --- 顺序表示和实现_第12张图片

 算法与数据结构 --- 线性表 --- 顺序表示和实现_第13张图片

 算法与数据结构 --- 线性表 --- 顺序表示和实现_第14张图片

1.上面这个方法的完整步骤是:创建一个引用,先不给这个引用找到母体而是把它作为参数传给函数,在函数中我们可以给这个引用找到母体(注意这个母体不能在函数结束后就自动销毁,那样就相当于没有给引用找到母体了)

1.这里的查找算法采用的是顺序查找法,从上往下/从下往上一个元素一个元素的比较查找

2.注意这个算法中我们返回的是从1开始的元素的物理序号,而不是从0开始的元素的逻辑序号算法与数据结构 --- 线性表 --- 顺序表示和实现_第15张图片

 所谓的平均查找长度其实就是 :平均查找次数

(查找第一个元素所需的次数 + 第二个元素所需的次数 + 第三个 + .... 第n个元素所需的次数 ) / 元素总数n

对于顺序查找法而言上式等于 : (1+2+3+...+n)/ n

  查第一个元素需要的查找次数 * 第一个元素出现的概率 + 第二个元素 * 概率 +...+第n个元素*概率

最终得到和就是我们需要的平均查找长度(期望值)


第五部分 --- 线性表的顺序表示和实现(5,6)

1.插入位置只能在 0~n 位序上(逻辑位序),或者说是只能在1~n+1的位序上(物理位序)

1.以引用的方式作为形参的时候,我们可以直接将变量作为实参传给函数,此时实参传给形参的过程就相当于在给引用找别名

2.如果算法中的基础语句(执行次数最多的语句)执行的次数要根据我们给定的参数来决定的话,那么算法的时间复杂度中的 f(n) 就等于将给定参数的所有可能值下的基础语句执行次数求和后除以所有的可能数得到的平均次数,如下图:

 

1.如果我们需要保留被删除元素的话,我们可以执行第二步,如果不需要的话可以不执行第二步,直接删除即可。算法与数据结构 --- 线性表 --- 顺序表示和实现_第16张图片

 

  1.等差数列求和: Sn = [n*(a1+an)] / 2


第六部分 --- 线性表的顺序表示和实现小结

算法与数据结构 --- 线性表 --- 顺序表示和实现_第17张图片

1.辅助空间就是我们在算法中新开辟的内存空间算法与数据结构 --- 线性表 --- 顺序表示和实现_第18张图片

 1.存储密度那里的结点结构指的是我们开辟的用来存储结点的内存空间

你可能感兴趣的:(算法与数据结构,数据结构)