线性表
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构(逻辑上相邻,物理上也相邻)
特点:知道某个元素的存储位置就可以计算其他元素的存储位置
头插法建立链表

尾插法建立链表
保持一个指针始终指向最后一个节点,这样就间接记录了新节点的插入地址。从而实现不进行遍历即可进行插入
循环链表优点:从表中任一节点出发均可找到其他节点
头指针单循环链表(如下图)

尾指针单循环链表(如下图)

栈:插入和删除均在同一端进行,后进先出(Last In First Out,LIFO),顺序栈更常见
top指针指向栈顶元素之上的的下标地址
base指针指向栈底元素的地址
stacksize表示栈可使用的最大容量
上溢(overflow):栈已经满,还要压入元素
下溢(underflow):栈已经空,还要弹出元素
上溢是一种错误,使问题的处理无法进行;而下溢一般认为是一种结束条件,即问题处理结束
队列:表头删除,表尾插入(First In First Out,FIFO),循环顺序队列更常见
数组
数组可以是多维的,但存储数据元素的内存单元地址是一维的。因此,在存储数组结构之前,需要解决将多维关系映射到一维关系的问题
广义表(通常用链表存储)
表头:若广义表非空,则其第一个元素就是表头
表尾:除表头之外的其他元素组成的表
基本运算
求表头GetHead(L):非空广义表的第一个元素
求表尾GetTail(L):非空广义表除去表头元素以外其他元素所构成的表
矩阵的压缩存储
矩阵的压缩存储:为多个相同的非零元素只分配一个存储空间;对零元素不分配空间
对角矩阵
存储方法:只存储下三角(或者上三角)的数据元素。共占用 n(n+1)/2 个元素空间
可以以行序为主序将元素放在一维数组 array[n(n+1)/2] 中

三角矩阵
定义:对角线以下(或以上)的数据元素全部为常数c
存储方法:重复元素c共享一个元素存储空间。共占用 n(n+1)/2+1 个元素空间
下标 k 计算

对角矩阵(带状矩阵)
定义:所有非零元素都集中在以主对角线为中心的带状区域中,区域外的值全为0,则称为对角矩阵
存储方法:使用二维数据存储

稀疏矩阵
定义:设在 m*n 的矩阵中有 t 个非零元素。令 &=t/(m*n),当 &<=0.05 时称为稀疏矩阵

KMP(Knuth Morris Pratt)算法
acbddac
前缀:a、ac、acb、acbd、acbdd、acbdda
后缀:c、ac、dac、ddac、bddac、cbddac
最长匹配前后缀:ac
将模式串从下标1位置开始存储
然后对模式串进行单独分析
当模式串下标1位置与主串当前比较位不同时要进行怎样的处理;当模式串下标5位置与主串当前比较位不同时要进行怎样的处理


浙公网安备 33010602011771号