朱战立数据结构第05章课件PPT文件格式下载.ppt
- 文档编号:15555616
- 上传时间:2022-11-04
- 格式:PPT
- 页数:32
- 大小:488.50KB
朱战立数据结构第05章课件PPT文件格式下载.ppt
《朱战立数据结构第05章课件PPT文件格式下载.ppt》由会员分享,可在线阅读,更多相关《朱战立数据结构第05章课件PPT文件格式下载.ppt(32页珍藏版)》请在冰豆网上搜索。
数组符合线性结构的定义。
数组和数组符合线性结构的定义。
数组和线性表相比线性表相比,线性结构(包括线性表、堆栈、队列、串)的顺序存储结线性结构(包括线性表、堆栈、队列、串)的顺序存储结构实际就是使用数组来存储。
可见,数组是其他数据结构实现构实际就是使用数组来存储。
可见,数组是其他数据结构实现顺序存储结构的基础,是软件设计中最基础的数据结构。
顺序存储结构的基础,是软件设计中最基础的数据结构。
2.数组的实现机制数组的实现机制()、一维数组(一维数组(n个元素)中任一元素个元素)中任一元素ai的内存单元地址的内存单元地址的内存单元地址的内存单元地址Loc(ai)=LOC(a)+i*k(0in)()、一个一个m行行n列的二维数组列的二维数组LOC(aij)=LOC(a00)+(i*n+j)*k(0im,0jn)注:
注:
CC语言中数组元素采用语言中数组元素采用行主序行主序的存放方法,即的存放方法,即行优先行优先顺序。
顺序。
a的内存单元地址的内存单元地址每个元素所需的字节个数每个元素所需的字节个数每个元素所需的字节个数每个元素所需的字节个数a00的内存单元地址的内存单元地址a0,0a0,1a0,n-1a1,0a1,1a1,n-1am-1,0am-1,1am-1,n-1Amn=一个一个mn的二维数组可以看成是的二维数组可以看成是m行的一维数行的一维数组,或者组,或者n列的一维数组。
列的一维数组。
3.数组抽象数据类型数组抽象数据类型数据集合数据集合:
数数组组的的数数据据集集合合可可以以表表示示为为a0,a1,a2,.,an-1,每每个个数数据据元元素素的的数据类型为数据类型为抽象数据元素类型抽象数据元素类型DataType。
操作集合操作集合:
(1)1)求数组元素个数求数组元素个数ArrayLength(D)(22)取数组元素取数组元素Get(D,i)(3)3)存数组元素存数组元素Storage(D,i,x)例如,例如,inta10;
a3=a4;
/赋值号右边的赋值号右边的a4是取操作,是取操作,取值取值/赋值号左边的赋值号左边的a3是存操作,是存操作,取地址取地址5.25.2动态数组动态数组数数组组有有静静态态存存储储结结构构的的数数组组和和动动态态存存储储结结构构的的数数组组两两种种,它它们的区别在于:
们的区别在于:
静态数组在定义时就必须给出数组个数;
动态数组是在具体申请存储单元空间时才给出数组元素的个数。
例例5-25-2定定义义有有33行行、44列列整整数数类类型型的的二二维维数数组组aa,先先逐逐行行分分别别给给数数组组元元素素赋赋数数据据11,22,.,1212,然然后后显显示示数数组组中中的的数数值值。
要要求求分分别别把把申申请请二二维维动动态态数数组组的的过过程程和和释释放放二二维维动动态态数数组组的过程编写成函数。
的过程编写成函数。
int*Make2DArray(introw,intcol)int*a,i;
a=(int*)malloc(row*sizeof(int*);
for(i=0;
irow;
i+)ai=(int*)malloc(col*sizeof(int);
returna;
voidDiliver2DArray(int*a,introw)inti;
i+)free(ai);
free(a);
#include#include#include#include“Array.h”voidmain(void)inti,j,c;
introw=3,col=4,*a;
a=Make2DArray(row,col);
c=1;
i+)for(j=0;
jcol;
j+)aij=c;
c+;
j+)printf(%5d,aij);
printf(n);
Diliver2DArray(a,row);
程序运行输出结果如下:
123412345678567891011129101112注注意意,二二维维动动态态数数组组的的全全部部存存储储空空间间不不是是一一次次申申请请的的,所所以以二二维维动动态态数数组组的的每每一一维维数数组组在在物物理理上上是是连连续续的的,而而全全部部二二维维动动态态数组在物理上不一定是连续的。
数组在物理上不一定是连续的。
5.35.3特殊矩阵特殊矩阵特殊矩阵特殊矩阵:
指有许多值相同的元素或有许多零元素、且值指有许多值相同的元素或有许多零元素、且值相同的元素或零元素的分布有一定规律的矩阵。
相同的元素或零元素的分布有一定规律的矩阵。
1.几种特殊矩阵的压缩存储几种特殊矩阵的压缩存储:
(1)
(1)n阶对称矩阵阶对称矩阵在一个在一个n阶方阵阶方阵AA中,若元素满足下述性质:
中,若元素满足下述性质:
aij=aji(11i,jn)则称则称A为为n阶对称矩阵阶对称矩阵。
如图。
如图5.1是一个是一个5阶对称矩阵。
阶对称矩阵。
15137a1150800a21a2218926a31a32a3330251.70613an1an2an3annn阶对称矩阵中的元素关于主对角线对称,故只要存储矩阵中上阶对称矩阵中的元素关于主对角线对称,故只要存储矩阵中上三角或下三角中的元素,让每两个对称的元素共享一个存储空三角或下三角中的元素,让每两个对称的元素共享一个存储空间,这样,能节约近一半的存储空间。
间,这样,能节约近一半的存储空间。
在这个下三角矩阵中,第在这个下三角矩阵中,第i行恰有行恰有i个元素,元素总数为个元素,元素总数为n(n+1)/2,这样就可将这样就可将n2个数据元素压缩存储在个数据元素压缩存储在n(n+1)/2个存个存储单元中。
储单元中。
假设以一维数组假设以一维数组va作为作为nn阶对称矩阵阶对称矩阵A的压缩存储单元,的压缩存储单元,k为一维数组为一维数组va的下标序号,的下标序号,aij为为nn阶对称矩阵阶对称矩阵A中中i行行j列的数据列的数据元素元素(其中其中11i,jn),),其数学映射关系为:
其数学映射关系为:
i(i-1)/2+j-1当当ijj(j-1)/2+i-1当当ijk=
(2)
(2)nn阶三角矩阵阶三角矩阵以主对角线划分,以主对角线划分,nn阶三角矩阵有阶三角矩阵有nn阶上三角矩阵和阶上三角矩阵和nn阶阶下三角矩阵两种。
下三角矩阵两种。
nn阶上三角矩阵如下图阶上三角矩阵如下图(a)a)所示,它的下三角(不包括所示,它的下三角(不包括主对角线)中的元素均为主对角线)中的元素均为00(或常数)。
(或常数)。
nn阶下三角矩阵正好阶下三角矩阵正好相反,它的主对角线上方均为相反,它的主对角线上方均为00(或常数),如下图(或常数),如下图(b)b)所所示。
示。
在大多数情况下,注:
在大多数情况下,nn阶三角矩阵常数为零。
阶三角矩阵常数为零。
a11a12a1na11ccca22a2na21a22c.ccannan1an2ann(a)(a)上三角矩阵上三角矩阵(b)b)下三角矩阵下三角矩阵假设以一维数组假设以一维数组sa作为作为n阶下三角矩阵阶下三角矩阵A的压缩存储单元,的压缩存储单元,k为一维数组为一维数组va的下标序号,的下标序号,aij为为n阶下三角矩阵阶下三角矩阵A中中i行行j列的列的数据元素数据元素(其中其中11i,jn),),其数学映射关系为:
i(i-1)/2+j-1当当ijn(n+1)/2(或空)或空)当当ijk=注:
此时一维数组注:
此时一维数组sasa的数据元素个数为的数据元素个数为(n(n+1)/2)+1n(n+1)/2)+1个,个,其中数组其中数组sasa的最后一个位置存储的最后一个位置存储AA中数值不为中数值不为00的那个常数。
的那个常数。
例例5.35.3为节省内存,为节省内存,nn阶对称矩阵采用压缩存储,要求:
阶对称矩阵采用压缩存储,要求:
(11)编编写写实实现现CC=AA+BB操操作作的的函函数数。
设设矩矩阵阵AA、矩矩阵阵BB和和矩矩阵阵CC均采均采用压缩存储方式存储,矩阵元素均为整数类型。
用压缩存储方式存储,矩阵元素均为整数类型。
(22)编编写写一一个个采采用用压压缩缩存存储储的的nn阶阶对对称称矩矩阵阵的的输输出出函函数数,要要求求输出显示成矩阵形式,设矩阵元素均为整数类型。
输出显示成矩阵形式,设矩阵元素均为整数类型。
(33)设设矩矩阵阵AA和和矩矩阵阵BB为为如如下下所所示示的的矩矩阵阵,编编写写一一个个用用矩矩阵阵AA和和矩阵矩阵BB作为测试例子的测试上述函数的主程序。
作为测试例子的测试上述函数的主程序。
voidAdd(inta,intb,intc,intn)inti;
i=n*(n+1)/2-1;
i+)ci=ai+bi;
voidPrint(inta,intn)inti,j,k;
for(i=1;
i=n;
i+)for(j=1;
j=j)k=i*(i-1)/2+j-1;
elsek=j*(j-1)/2+i-1;
printf(%d,ak);
#include(矩阵加和输出函数同上,省略)矩阵加和输出函数同上,省略)voidmain(void)inta=1,2,4,3,5,6,b=10,20,40,30,50,60,c6;
/*注意元素的排列次序注意元素的排列次序*/intn=3;
Add(a,b,c,n);
Print(c,n);
5.45.4稀疏矩阵稀疏矩阵1.概念概念
(1)
(1)、稀疏矩阵、稀疏矩阵矩阵中非零元素的个数远远小于矩阵元素个数。
矩阵中非零元素的个数远远小于矩阵元素个数。
(2)、稠密矩阵、稠密矩阵一个不稀疏的矩阵。
一个不稀疏的矩阵。
(3)、稀疏矩阵压缩存储方法、稀疏矩阵压缩存储方法只存储只存储稀疏矩阵中的非零元素,稀疏矩阵中的非零元素,实现方法是实现方法是:
将每个非将每个非零元素用一个零元素用一个三元组三元组(i,j,aij)来表示,则每个来表示,则每个稀疏矩稀疏矩阵可用一个阵可用一个三元组线性表三元组线性表三元组线性表三元组线性表来表示。
来表示。
稀疏矩阵和对应的三元组线性表稀疏矩阵和对应的三元组线性表2.2.三元组顺序表三元组顺序表指用顺序表存储的三元组线性表。
指用顺序表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 朱战立 数据结构 05 课件