北邮算法与数据结构.ppt
《北邮算法与数据结构.ppt》由会员分享,可在线阅读,更多相关《北邮算法与数据结构.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构-第五章 数组和广义表1第五章第五章 数组和广义表数组和广义表5.1 5.1 数组和线性表的关系以及数组的运算数组和线性表的关系以及数组的运算5.2 5.2 数组的顺序存储结构数组的顺序存储结构 5.3 5.3 矩阵的压缩存储矩阵的压缩存储5.4 5.4 广义表的定义和表示方法广义表的定义和表示方法5.5 5.5 广义表的存储结构广义表的存储结构5.6 5.6 广义表的递归算法广义表的递归算法本章学习要点、习题与上机作业本章学习要点、习题与上机作业 本质上是非线性结构。扩展的线性表:本质上是非线性结构。扩展的线性表:表中的数据元素本身也是一个数据结构。表中的数据元素本身也是一个数据结构
2、。数据结构-第五章 数组和广义表25.1 数组和线性表的关系以及数组的运算数组和线性表的关系以及数组的运算任何数组任何数组A都可以看作一个线性表都可以看作一个线性表 A=(a1,a2,ai,an)二维数组mn时,ai是数组中第i行所有元素,0im-1,表中每一个元素是一个一维数组;三维数组时,表中每一个元素是一个二维数组;n维数组时,表中每一个元素是一个(n-1)维数组()()()()()()()()()=A mna00 a01 a 0,n-1a10 a11 a 1,n-1 am-1,0 am-1,1 am-1,n-1数据结构-第五章 数组和广义表3数组与线性表之间的关系数组与线性表之间的关系
3、线性表的扩展,其数据元素本身也是线性表数组的特点数组的特点数组中各元素都具有统一的类型可以认为,d维数组的非边界元素具有d个直接前趋和d个直接后继数组维数确定后,数据元素个数和元素之间的关系不再发生改变,适合于顺序存储每组有定义的下标都存在一个与其相对应的值在数组上的基本操作在数组上的基本操作给定一组下标,取得相应的数据元素值给定一组下标,修改相应的数据元素值数据结构-第五章 数组和广义表4数组的基本操作定义数组的基本操作定义(1)构造n维数组 InitArray(&A,n,bound1,boundn)(2)销毁数组A DestroyArray(&A)(3)取得指定下标的数组元素值 Value
4、(A,&e,index1,indexn)(4)为指定下标的数组元素重新赋值 Assign(&A,e,index1,indexn)数据结构-第五章 数组和广义表55.2 数组的顺序存储结构数组的顺序存储结构一维数组一维数组b基地址L个单元a0a1aiLOCi=LOC0+iL =b+i L =c0+c1 ic1=Lc0=b=LOC0an-1ElemType 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,n-1a=mna00a0,n-1a10aijam-1
5、,n-1ba1LOCi,j=LOC0,0+(in+j)L =c0+c1i+c2j c2=L c1=nc2=b2c2 c0=b=LOC0,0注:Pascal、C语言以行序为主序 Fortran 语言以列序为主序ElemType amn;ElemType amn;“行序为主序”即“低下标优先”“列序为主序”即“高下标优先”aij数据结构-第五章 数组和广义表7n维数组维数组 LOCj1,j2,.,jn=c0+c1j1+c2j2+.+cnjn=c0+ciji cn=L;ci-1=cibi (1in)c0=b=LOC0,0,.,0 数组是一种随机存取结构数组是一种随机存取结构:对任一元素定位时间相等对
6、任一元素定位时间相等.思考:ElemType A3.7,0.9,1.6,5.12 设每数组元素占用8个存储单元,起始地址为1000,求按低下标优先(类似行优先)顺序存储时,LOC6,1,4,7=?ElemType ab1b2.bn;数据结构-第五章 数组和广义表8 参考解答参考解答 维数维数:b1=5,b2=10,b3=6,b4=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
7、,0+c1j1+c2j2+c3j3+c4j4 =1000+c1j1+c2j2+c3j3+82 =1000+c1j1+c2j2+883+82 =1000+c1j1+6461+883+82 =1000+384103+6461+883+82 =13112数据结构-第五章 数组和广义表95.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-
8、1 当ij 0 ijC Ck k 0 n(n+1)/2 0 n(n+1)/2CC上三角矩阵下三角矩阵i i j ji i j j数据结构-第五章 数组和广义表115.3.3 带状矩阵(对角矩阵)带状矩阵(对角矩阵)特点特点 在nn的方阵中,非零元素集中在主对角线及其两侧共L(奇数)条对角线的带状区域内 L对角矩阵。存储方法存储方法 只存储带状区内的元素。1)以对角线的顺序存储,共n*L个元素。1 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
9、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)/2k 0 n*L-1sa数据结构-第五章 数组和广义表122)只存储带状区内的元素。除首行和末行,按每行 L个元素,共(n-2)L+(L+1)=(n-1)L+1 个元素。sa0.(n-1)L 存储地址计算: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
10、 2 8 38 2 3 /4 2 0 3 5 77 6 8 9 6 9 1 5 6 1 4 2 /2 8 3sak 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 数据结构-第五章 数组和广义表135.3.4 随机稀疏矩阵随机稀疏矩阵特点特点 大多数元素为零。常用存储方法常用存储方法 记录每一非零元素(i,j,aij)节省空间,但丧失随机存取功能顺序存储:三元组表链式存储:十字(正交)链表 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
11、0 0 0 0 0 0 28 0 0 0=t/(mn)0.05数据结构-第五章 数组和广义表145.3.4.1 三元组表三元组表类型定义类型定义#define MAXSIZE 1000 /设定非零元素最大值typedef struct int i,j;ElemType e;Triple;typedef struct Triple dataMAXSIZE+1;/三元组表,data0未用int mu,nu,tu;/行数、列数、非零元个数TSMatrix;i j e1 1 151 4 221 6 -152 2 222 3 33 4 -65 1 916 3 281 12 23 34 45 56 67
12、78 8mm数据结构-第五章 数组和广义表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 28a.dataa.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 -15b.data数据结构-第五章 数组和广义表16算法算法1 O(nt)void TransMatrix(TSMatrix&b,TSMatrix a)b.mu=a.nu;b.nu=a.mu;b.tu=a.tu;i
13、f (b.tu )q=1;/指示b中存放数据的位置,初值为1 for(col=1;col=a.nu;col+)/对a的每一列 for(p=1;p=a.tu;p+)/对a的每个三元组检查 if (a.datap.j=col)/找列号为col的三元组 b.dataq.i=a.datap.j;b.dataq.j=a.datap.i;b.dataq.e=a.datap.e;q+;/修正q值 /TransMatrix数据结构-第五章 数组和广义表17 算法算法2 快速转置法 O(n+t)引入两个辅助向量:num1:a.n:a中每列的非零元素个数cpot1:a.n:a中每列的第一个非零元素在b中的位置a中
14、的列号 col numcol cpotcol 1 2 1 2 1 3 3 2 4 4 2 6 5 0 8 6 1 8cpot1=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 28a a转置转置 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 -15b b数据结构-第五章 数组和广义表18 Statue FastTransMatrix(TSMatrix&b,
15、TSMatrix a)b.mu=a.nu;b.nu=a.mu;b.tu=a.tu;if (b.tu)for (col=1;col=a.nu;+col)/num清零 numcol=0;for(t=1;t=a.tu;+t)/对a.tu个非零元素按列号计数 +numa.datat.j;cpot1=1;/生成cpot for(col=2;col=a.nu;+col)cpotcol=cpotcol-1+numcol-1;for (p=1;p=a.tu;+p)/对a.tu个非零元素转置 col=a.datap.j;q=cpotcol;b.dataq.i=a.datap.j;b.dataq.j=a.data
16、p.i;b.dataq.e=a.datap.e;+cpotcol;return OK;/FastTransMatrix数据结构-第五章 数组和广义表195.3.4.2 行逻辑链接的表行逻辑链接的表便于随机存取任意一行的非零元素。typedef struct Triple dataMAXSIZE+1;int rposMAXRC+1;int mu,nu,tu;RLSMatrix;i j e1 1 151 4 221 6 -152 2 222 3 33 4 -65 1 916 3 28 1 4 6 0 7 8 1 2 3 4 5 612345678M.rposM.dataRLSMatrix M;这种
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 数据结构
限制150内