严蔚敏数据结构学习笔记五.数组和广义表

第五章,数组和广义表(广义表放入后面章节)

5.1数组的类型定义
数组没有插入删除操作
5.2数组的顺序表示和实现
类型特点:
1)只有引用型操作,没有加工型操作;(没有链式表示)
2)数组是多维的结构,而存储空间是一个一维的结构。
有两种顺序映象的方式:
1)以行序为主序(低下标优先);
二维数组A中任一元素aij的存储位置:
LOC[i,j]=LOC[0,0]+(b2*i+j)L(每行有b2个元素,L为每个元素所占位置)
推广到一般情况,N维数组数据元素存储位置
2)以列序为主序(高下标优先);
5.3稀疏矩阵的压缩存储
假设m行n列的矩阵含t个非零元素,则称δ=t/(m*n)为稀疏因子,通常认为δ<=0.05的矩阵为稀疏矩阵。
以常规方法,即以二维数组表示高阶的稀疏矩阵时产生的问题:
1)零值元素占的空间很大;
2)计算中进行了很多和零值的运算;
解决问题的原则:
1)尽可能少存或不存零值元素;
2)尽可能减少没有实际意义的运算;
3)运算方便;即:能尽可能快地找到与下标值(i,j)对应的元素;能尽可能快地找到同一行或同一列的非零值元。
1,特殊矩阵的压缩存储如:三角矩阵,对角矩阵
2,随机稀疏矩阵的压缩存储(随机矩阵中的非零元分布不规则)以下为其三中表示方法
一,三元组顺序表
二,行逻辑联接的顺序表
相乘算法的时间复杂度相当于O(m*p)
三,十字链表

5.4广义表的结构特点:
1,广义表中的数据元素有相对次序;
2,广义表的长度定义为最外层包含元素个数;
3,广义表的深度定义为所含括弧的重数;(“原子”的深度为0,空表的深度为1)
4,广义表可以共享;
5,广义表可以是一个递归的表;
递归表的深度是无穷值,长度是有限值。
6,任何一个非空广义表均可分解为表头,表尾两部分,表头可能 是原子也可能是广义表,表尾 一定是广义表
5.5广义表的表示方法
头,尾指针的链表结构:表结点,原子结点
广义表存储结构的两种分析方法:一,为分为表头和表尾然后逐次递归,二,为分为各个子表

你可能感兴趣的:(算法)