- 21
- 0
- 约1.42万字
- 约 56页
- 2019-08-04 发布于山东
- 举报
例. 三对角矩阵的压缩存储 用十字链表表示稀疏矩阵 在链表中,稀疏矩阵的每个非零元素对应一个含有五个域的 结点,它们分别是 row: 行域表示非零元素所在行 col: 列域表示非零元素所在列 val: 值域表示非零元素值 down:向下域,用以链接同一列中下一个非0元素 right:向右域,用以链接同一行中下一个非0元素 结点结构如下图所示。 row col val down right 在十字链表中将稀疏矩阵每一行的非零元素通过right域链接成一个带有表头结点的行循环链表,将每一列的非零元素通过down域链接成一个带有表头结点的列循环链表。 因此,每个非零元素即是第i行循环链表中的一个结点又是第j列循环链表中的一个结点。由于整个稀疏矩阵是由十字交叉的链结构来表示的,故称其为十字链表。如对下面的稀疏矩阵A可由如下图所示的十字链表来表示。 3 0 0 7 0 0 -1 0 2 0 0 0 0 0 0 0 0 0 0 -8 A= 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 3 1 4 7 3 1 2 2 3 -1 5 4 -8 H1 H2 H3 H4 H5 H1 H2 H3 H4 H5 HA 5 4 0 0 0 0 0 0 0 0 0 0 1 1 3 1 4 7 3 1 2 2 3 -1 5 4 -8 H1 H2 H3 H4 H5 HB 在表示有t个非零元素的m×n的矩阵的十字链表中,共有t+max(m,n)+1个结点,每个结点大约需要占用2~3个存储单元。因此,只在矩阵非零元素个数t比矩阵的阶m×n小的多的条件下,十字链表的存储开销才小于矩形结构的二维数组的开销m×n。 以上给出了稀疏矩阵的一种新的存储思想,但如何将一个已知的稀疏矩阵以十字链表表示出来,还是一个需要解决的问题。下面我们就来讨论在内存中建立十字链表的具体算法。 首先输入三元组(m,n,t)它们是要存储矩阵的行数,列数及非零元素个数,紧接着输入t个形如(i,j,aij)的三元组,它们分别代表了t个非零元素行、列值及元素值,其输入次序是按矩阵中以行为主顺序输入的。如此,对于前面图中所示的含有5个非零元素的稀疏矩阵A。其输入的数据依次为: 5,4,5;1,1,3;1,4,7;2,3,-1;3,1,2;5,4,8 算法中还需引入一辅助工作数组: hdn:p[1:p](p=max(m,n)) 及指针变量last。 其中hdn[i]是指向十字链表中第i行(也是第i列)行(列)链表的表头结点的指针,last是指向当前所建的行链表的最右(后)面的那个结点。这样,建立十字链表的算法Mread(A)执行的大致过程是: i)按前述规定建立p个表头结点(不包括HA)。 ii)建立每个行循环链表,在此过程中第i个链表示的表头结点的val域先用来跟踪第i列的列链表当前最下(后)面的那个结点,其作用相当于建立行链表时的指针last。 iii)建立表头结点HA,并将全体p+1个表头结点链成循环链表。算法具体描述如下: PROCEDURE Mread(A); BEGIN read(m,n,t);p:=max(m,n); FOR i=1 TO p DO [ newl(x); hdn[i]:=x; x↑.row:=x↑.col:=0; x↑.right:=x↑.val:=x]; crow:=1; last:=hdn[1]; FOR i:=1 TO t DO [ read(rrow,cool,val); IF rrowcrow THEN [ last↑.right:=hdn[crow]; crow:=rrow; last:=hdn[crow]] newl(x); x↑.row:=rrow; x↑.col:=ccol; x↑.val:=val; last↑.right:=x; last:=x; (hdn[cool]↑.Val)↑.down:=x; hdn[ccol]↑.val:=x]
您可能关注的文档
- 数据结构与算法-第1章 数据库基本原理.ppt
- 数据结构与算法-第1章(中科大) 基础算法思想.ppt
- 数据结构与算法-第2章 SQL Server概述.ppt
- 数据结构与算法-第2章 简单数据结构.ppt
- 数据结构与算法-第3章 创建和管理数据库.ppt
- 数据结构与算法-第3章 复杂数据结构(中科大).ppt
- 数据结构与算法-第3章 复杂数据结构.ppt
- 数据结构与算法-第4章 创建数据类型和表.ppt
- 数据结构与算法-第5章 实现数据完整性.ppt
- 数据结构与算法-第6章 数组与广义表.ppt
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- 青岛版五四制一年级上册数学期末试题.pdf VIP
- 城市公园管理与维护规范.docx VIP
- 精品解析:2022-2023学年山东省青岛市城阳区青岛版四年级上册期末质量抽测数学试卷(原卷版).docx VIP
- 浙江省杭州市拱墅区2024-2025学年四年级上学期期末考试数学试题.docx VIP
- 5《和大家在一起》第二课时 (教学设计) 一年级道德与法治下册(统编版2025).pdf VIP
- 农业社会化服务体系.ppt VIP
- 5《和大家在一起》第一课时 (教学设计) 一年级道德与法治下册(统编版2025).docx VIP
- 2023年四川高级政工师题库 .pdf VIP
- 中国地理《中国的河流-长江》.ppt VIP
- 上海市闵行区2024-2025学年高一上学期期末考试生物试卷含答案.docx VIP
原创力文档

文档评论(0)