北邮算法与数据结构.ppt
《北邮算法与数据结构.ppt》由会员分享,可在线阅读,更多相关《北邮算法与数据结构.ppt(40页珍藏版)》请在三一办公上搜索。
1、数据结构-第五章 数组和广义表,1,第五章 数组和广义表,5.1 数组和线性表的关系以及数组的运算5.2 数组的顺序存储结构 5.3 矩阵的压缩存储5.4 广义表的定义和表示方法5.5 广义表的存储结构5.6 广义表的递归算法本章学习要点、习题与上机作业,本质上是非线性结构。扩展的线性表:表中的数据元素本身也是一个数据结构。,数据结构-第五章 数组和广义表,2,5.1 数组和线性表的关系以及数组的运算,任何数组A都可以看作一个线性表 A=(a1,a2,ai,an)二维数组mn时,ai是数组中第i行所有元素,0im-1,表中每一个元素是一个一维数组;三维数组时,表中每一个元素是一个二维数组;n维
2、数组时,表中每一个元素是一个(n-1)维数组,数据结构-第五章 数组和广义表,3,数组与线性表之间的关系,线性表的扩展,其数据元素本身也是线性表数组的特点数组中各元素都具有统一的类型可以认为,d维数组的非边界元素具有d个直接前趋和d个直接后继数组维数确定后,数据元素个数和元素之间的关系不再发生改变,适合于顺序存储每组有定义的下标都存在一个与其相对应的值在数组上的基本操作给定一组下标,取得相应的数据元素值给定一组下标,修改相应的数据元素值,数据结构-第五章 数组和广义表,4,数组的基本操作定义,(1)构造n维数组 InitArray(&A,n,bound1,boundn)(2)销毁数组A Des
3、troyArray(&A)(3)取得指定下标的数组元素值 Value(A,&e,index1,indexn)(4)为指定下标的数组元素重新赋值 Assign(&A,e,index1,indexn),数据结构-第五章 数组和广义表,5,5.2 数组的顺序存储结构,一维数组,b,基地址,L个单元,a0,a1,ai,LOCi=LOC0+iL=b+i L=c0+c1 ic1=Lc0=b=LOC0,an-1,ElemType an;,数据结构-第五章 数组和广义表,6,二维数组,a00 a01 a02.a0,n-1 a10 a11 a12.a1,n-1:am-1,0 am-1,1 am-1,2.am-1
4、,n-1,a=,mn,LOCi,j=LOC0,0+(in+j)L=c0+c1i+c2j c2=L c1=nc2=b2c2 c0=b=LOC0,0,注:Pascal、C语言以行序为主序 Fortran 语言以列序为主序,ElemType amn;,“行序为主序”即“低下标优先”“列序为主序”即“高下标优先”,aij,数据结构-第五章 数组和广义表,7,n维数组,LOCj1,j2,.,jn=c0+c1j1+c2j2+.+cnjn=c0+ciji cn=L;ci-1=cibi(1in)c0=b=LOC0,0,.,0 数组是一种随机存取结构:对任一元素定位时间相等.,思考:ElemType A3.7,
5、0.9,1.6,5.12 设每数组元素占用8个存储单元,起始地址为1000,求按低下标优先(类似行优先)顺序存储时,LOC6,1,4,7=?,ElemType ab1b2.bn;,数据结构-第五章 数组和广义表,8,参考解答 维数:b1=5,b2=10,b3=6,b4=8法1 LOC6,1,4,7=1000+1068(6-3)+68(1-0)+8(4-1)+(7-5)8=13112法2相当于A0.4,0.9,0.5,0.7,求LOC3,1,3,2LOC3,1,3,2=LOC0,0,0,0+c1j1+c2j2+c3j3+c4j4=1000+c1j1+c2j2+c3j3+82=1000+c1j1+
6、c2j2+883+82=1000+c1j1+6461+883+82=1000+384103+6461+883+82=13112,数据结构-第五章 数组和广义表,9,5.3 矩阵的压缩存储,目的是节省空间。5.3.1 对称矩阵特点 在nn的矩阵a中,满足如下性质:aij=aji(1 i,j n)存储方法 只存储下(或者上)三角(包括主对角线)的数据元素。共占用n(n+1)/2个元素空间。k=i(i-1)/2+j-1 当ij j(j-1)/2+i-1 当ij,a11 a21 a22 a31 aij(aji)ann,k 0 1 2 3 n(n+1)/2-1,sa,aij,aji,数据结构-第五章 数
7、组和广义表,10,5.3.2 三角矩阵,特点 对角线以下(或者以上)的数据元素(不包括对角线)全部为常数c。存储方法 重复元素c共享一个元素存储空间,共占用n(n+1)/2+1个元素空间:sa0.n(n+1)/2。sa0=C 上三角矩阵 下三角矩阵 k=(i-1)(2n-i+2)/2+j-i+1 ij k=i(i-1)/2+j ij 0 ij 0 ij,数据结构-第五章 数组和广义表,11,5.3.3 带状矩阵(对角矩阵),特点 在nn的方阵中,非零元素集中在主对角线及其两侧共L(奇数)条对角线的带状区域内 L对角矩阵。存储方法 只存储带状区内的元素。1)以对角线的顺序存储,共n*L个元素。1
8、 2 3 4 5 61 8 2 3 0 0 02 4 2 0 3 0 03 5 7 7 6 8 04 0 9 6 9 1 55 0 0 6 1 4 26 0 0 0 2 8 3,五对角矩阵,/3 3 8 5/2 0 6 1 2 8 2 7 9 4 3 4 7 6 1 8/5 9 6 2/,s-2.2;1.6,-2-1 0 1 2,1 2 3 4 5 6,i1=i-jj1=j,|i-j|(L-1)/2,k 0 n*L-1,sa,数据结构-第五章 数组和广义表,12,2)只存储带状区内的元素。除首行和末行,按每行 L个元素,共(n-2)L+(L+1)=(n-1)L+1 个元素。sa0.(n-1)L
9、,存储地址计算:k=(i-1)L+(j-i)1 i,j n|i-j|(L-1)/2 8 2 3 0 0 0 4 2 0 3 0 0 5 7 7 6 8 0 0 9 6 9 1 5 0 0 6 1 4 2 0 0 0 2 8 3,8 2 3/4 2 0 3 5 7,7 6 8 9 6 9 1 5 6 1,4 2/2 8 3,sa,k 0 1 2 3 4 5 6 7 8 9,10 11 12 13 14 15 16 17 18 19,20 21 22 23 24 25,数据结构-第五章 数组和广义表,13,5.3.4 随机稀疏矩阵,特点 大多数元素为零。常用存储方法 记录每一非零元素(i,j,ai
10、j)节省空间,但丧失随机存取功能顺序存储:三元组表链式存储:十字(正交)链表 15 0 0 22 0-15 0 11 3 0 0 0 0 0 0-6 0 0 0 0 0 0 0 0 91 0 0 0 0 0 0 0 28 0 0 0,=t/(mn)0.05,数据结构-第五章 数组和广义表,14,5.3.4.1 三元组表,类型定义,#define MAXSIZE 1000/设定非零元素最大值typedef struct int i,j;ElemType e;Triple;typedef struct Triple dataMAXSIZE+1;/三元组表,data0未用int mu,nu,tu;/
11、行数、列数、非零元个数TSMatrix;,数据结构-第五章 数组和广义表,15,应用例 求转置矩阵,i j e1 1 1 152 1 4 223 1 6-154 2 2 225 2 3 36 3 4-67 5 1 918 6 3 28,a.data,转置,i j e1 1 1 152 1 5 913 2 2 224 3 2 35 3 6 286 4 1 227 4 3-68 6 1-15,b.data,数据结构-第五章 数组和广义表,16,算法1 O(nt),void TransMatrix(TSMatrix/修正q值/TransMatrix,数据结构-第五章 数组和广义表,17,算法2 快速
12、转置法 O(n+t),引入两个辅助向量:num1:a.n:a中每列的非零元素个数cpot1:a.n:a中每列的第一个非零元素在b中的位置a中的列号 col numcol cpotcol 1 2 1 2 1 3 3 2 4 4 2 6 5 0 8 6 1 8,cpot1=1cpotcol=cpotcol-1+numcol-1(2coln),i j e1 1 1 152 1 4 223 1 6-154 2 2 225 2 3 36 3 4-67 5 1 918 6 3 28,a,转置,i j e1 1 1 152 1 5 913 2 2 224 3 2 35 3 6 286 4 1 227 4 3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 数据结构

链接地址:https://www.31ppt.com/p-6246228.html