版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多维数组和广义表第一页,共二十八页,2022年,8月28日二维数组中,每个数据元素对应一对数组下标,在行方向上和列方向上都存在一个线性关系,即存在两个前驱和两个后继。也可看作是以线性表为数据元素的线性表。n维数组中,每个数据元素对应n个下标,受n个关系的制约,其中任一个关系都是线性关系。可看作是数据元素为n-1维数组的一维数组。因此,多维数组是对线性表的扩展:线性表中的数据元素本身又是一个多层次的线性表。5.1多维数组第二页,共二十八页,2022年,8月28日多维数组用一维的存储单元存放,需约定次序。C语言是行优先顺序。二维数组中任一元素aij的存储地址:n维数组Loc(aij)=Loc(a00)+(n*i+j)*d第三页,共二十八页,2022年,8月28日5.2矩阵的压缩存储
压缩存储使用一维数组存储矩阵,并且在一维数组中为多个值相同的元素只分配一个存储空间,对零元不分配空间。第四页,共二十八页,2022年,8月28日5.2.1特殊矩阵对称矩阵:aij=aji0≤i,j≤n-1压缩存储方法:为每一对对称元分配一个存储空间将下三角的元素,按行存储到一维数组sa中,共有n(n+1)/2个存储单元,aij在一维数组中的位置k为:
i(i+1)/2+j当i>=j;
j(j+1)/2+i否则第五页,共二十八页,2022年,8月28日特殊矩阵三角矩阵:上(下)三角中的元素均为常数c或0压缩存储方法:只存储上(下)三角元素。下三角:k=i*(i+1)/2+j(i>=j);k=n*(n+1)/2(i<j)上三角:k=(i/2)*(2n-i+1)+j-i(i<=j);k=n*(n+1)/2(i>j)注意:k,i,j从零开始第六页,共二十八页,2022年,8月28日特殊矩阵对角矩阵:所有非零元都集中在以主对角线为中心的带状区域中压缩方法:压缩存储到一维数组sa[]中,三对角矩阵有3n-2个元素。
第七页,共二十八页,2022年,8月28日5.2.2稀疏矩阵
已知矩阵Am×n,t为非零元个数,若t<<(m×n),则称Am×n为稀疏矩阵。 用三元组(i,j,v)存储行和列的位置及非零元值。第八页,共二十八页,2022年,8月28日1.三元组表顺序存储方式存储稀疏矩阵的三元组.第九页,共二十八页,2022年,8月28日
三元组表结构定义#definesmax16//非零元个数最大值Typedefintdatatypetypedefstruct{inti,j;//行下标和列下标
datatypev;}node;typedefstruct{nodedata[smax];//非零元三元组表
intm,n,t;//行数、列数、非零元个数
}SpMatrix;SPMatrix*a,*b;第十页,共二十八页,2022年,8月28日三元组表稀疏矩阵的转置运算第十一页,共二十八页,2022年,8月28日稀疏矩阵的转置
Spmatrix*transmat(a)Spmatrix*a;{intano,bno,col;Spmatrix*b;b=malloc(sizeof(Spmatrix));b->m=a->n;b->n=a->m;b->t=a->t;if(b->t>0){bno=0;for(col=0;col<a->n;col++)for(ano=0;ano<a->t;ano++)if(a->data[ano].j==col){b->data[bno].i=a->data[ano].j;b->data[bno].j=a->data[ano].i;b->data[bno].v=a->data[ano].v;bno++;}}returnb;}第十二页,共二十八页,2022年,8月28日2.十字链表当矩阵中非零元素的个数和位置经过运算后变化较大时,就不宜采用顺序存储结构,而应采用链式存储结构来表示三元组。行链表与列链表都是带表头结点的循环链表。第十三页,共二十八页,2022年,8月28日元素结点rptr——指向同一行中下一个非零元素的指针(向右域)cptr——指向同一列中下一个非零元素的指针(向下域)ijVcptrrptr00nextrptr00nextcptr表头结点行表头结点列表头结点next用于表示头结点的链接第十四页,共二十八页,2022年,8月28日1396457稀疏矩阵的十字链表表示的示例第十五页,共二十八页,2022年,8月28日十字链表结构定义:typedefstructlnode{inti,j;//非零元的行下标和列下标
structlnode*cptr,*rptr;union{structlnode*next;datatypev;}uval;} Link;Link*l;ijVcptrrptr第十六页,共二十八页,2022年,8月28日需要辅助结点作链表的表头,同时每个结点要增加两个指针域,所以只有在矩阵较大和较稀疏时才能起到节省空间的效果。分别用两个一维数组存储行链表的头指针和列链表的头指针,可加快访问速度。第十七页,共二十八页,2022年,8月28日
5.3广义表
5.3.1广义表的概念
5.3.2广义表的存储结构第十八页,共二十八页,2022年,8月28日
什么是广义表广义表也称为列表,是线性表的一种扩展,也是数据元素的有限序列。记作:LS=(α1,α2,…,αn)。其中αi可以是单个元素,也可以是广义表。5.3.1广义表的概念
说明
1)在广义表中,元素可以是单个元素,称为原子;也可以是广义表,称为广义表的子表;
3)广义表的定义是一个递归定义,因为在描述广义表时又用到了广义表;2)n是广义表长度;第十九页,共二十八页,2022年,8月28日A=()6)对非空广义表L,称第一个元素为L的表头,其余元素组成的广义表称为L的表尾;
B=(e)
C=(a,(b,c,d))
D=(A,B,C)
E=(a,E)例:B=(e)
C=(a,(b,c,d))D=(A,B,C)表头:e;表尾()表头:a;表尾((b,c,d))表头:A;表尾(B,C)空表,表长为0;4)下面是一些广义表的例子;B中只有一个元素e,表长为1;两个元素分别为a和子表(b,c,d);表长为2。它的三个元素A,B,C广义表;表长为3。E的表长为25)广义表的深度:表展开后所含括号的层数。设一个原子的深度是0。深度=max{各元素的深度}+1第二十页,共二十八页,2022年,8月28日广义表的图形表示LabL=(a,b)AxLA=(x,L)abAxLabyBB=(A,y)AxLayBCbC=(A,B)aDD=(a,D)第二十一页,共二十八页,2022年,8月28日广义表的基本运算
1)取广义表L的表头;head()
2)取广义表L的表尾;tail()
例如:head(L)=a,tail(L)=(b),head(tail(L))=b,tail(tail(L))=()head(B)=A,tail(B)=(y)第二十二页,共二十八页,2022年,8月28日5.3.2广义表的存储结构由于广义表中的数据元素可以具有不同的类型,(或是原子,或是广义表)因此难以用顺序存储结构表示,通常采用链式存储结构,书上介绍了两种链式存储结构,一种是单链表示法,另一种是双链表示法。
第二十三页,共二十八页,2022年,8月28日单链表示法
atomData/slinklinkatom=本结点为子表本结点为原子第二十四页,共二十八页,2022年,8月28日示例A=NuLL
A=()B1∧e
B=(e)C=(a,(b,c,d))C1a∧111bcd∧0第二十五页,共二十八页,2022年,8月28日1E0∧aE=(a,E)D=(B,C)0D0∧B1∧eC1a∧111bcd∧0第二十六页,共二十八页,2022年,8月28日双链表示法
Link1Datalink2C∧a∧∧∧∧bcd∧C=(a,(b,c,d))指向该结点的子表指向该结点的后继第二十七页,共二十八页
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 算力双碳战略下数据中心能效优化与价值增殖研究
- 2026年常用逻辑用语习题附答案
- 2026年交管12123学法减分机动车行驶速度规定测试题含答案
- 2026年公务员遴选队伍团结笔试试题及答案
- 2026年科创板开户科创板股票协议转让监管试题附答案
- 2026年国企人力资源管理岗招聘人才测评测试题含答案
- 2026年会计继续教育增值税纳税申报测试题及答案
- 2026年客运资格证儿童旅客服务综合试题及答案
- 2026年建筑施工企业法人A证应急预案评审测试题含答案
- 2026年加油站操作员油品储存安全测试题含答案
- AQ3067-2026重大事故隐患判定准则专项培训考核试卷-答案卷
- 2026-2027学年小学五年级上册数学全册教案(教学设计)人教版
- (零模)南京市2027届高三年级学情调研语文试卷(含答案)
- 《计算政治学概论》课件 第1-8章 计算政治学的起源与发展-数字社会治理
- 2025湖南长沙矿山研究院发布校招招聘52人笔试历年典型考点题库附带答案详解
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 自密实混凝土施工方法及浇筑管控要点
- (正式版)DB34∕T 4541-2023 《废弃露天采坑一般工业固废处置与生态修复技术规范》
- 2026年湖北省检察官、法官入员额考试真题(附答案)
- 常见ABO疑难血型案例分析
- 新质生产力汇报
评论
0/150
提交评论