1.跳跃表
多级跳跃表中存储多个指针。0级跳跃表只有一个指针,就是普通的链表形式;每多一级,结点中的指针就多一个。0级指针的跳跃数是1,1级指针的跳跃数是2,2级指针的跳跃数是4,以此类推。
检索时,先从某一级的指针查看,若其指向的下一个结点值比关键码要大,则级数减一;如果比关键码小,就继续访问下一个结点,依次类推直到找到关键码或找不到为止。
第一次检索选择的指针级别也可以是随机的,也可以按照某种策略选择。
2.广义表
广义表是指线性表中的数据元素可以拥有不同的类型。
分为以下几类:
1)纯表:表中存储的叶结点对应一棵树,从根结点到叶结点只有一条路径且没有叶结点会在表中重复出现;
2)可重入表:是一个DAG,由于重复出现,需要用到括号表示法。对于新出现的结点,用Li标识它,如果重复出现,就用Li代替表示该结点。
3)循环表:包含了回路的且可重入的表。
3.矩阵的表示方法
1)线性表表示下三角矩阵:
matrix[r,c] = list [ (r^2+r)/2+c ]
2)稀疏矩阵:正交表表示法
每个元素存储自己的值,同时还要存储4个指针,分别是指向它所在行和列的前后第一个非0元素的指针。
这种方法在非0元素少于9%的时候使用在空间上更有效。