数据结构——数组和广义表习题收集

来源:互联网 发布:windows任务管理工具 编辑:程序博客网 时间:2024/06/06 01:04

一 基础知识题:

(一)关于稀疏矩阵的存储

1.有三种存储稀疏矩阵的方法:a.十字链表法b.二维数组表示法c.三元组表示法

现有一n*n的稀疏矩阵,其非零元素的个数为P,假设在上述三种表示法中,每个域(值和指针)都占4个字节的空间,而且头结点和非头结点有相同的结构。请给出三种表示法表示该矩阵各自所需的空间数(以字节为单位)。

解:这道题主要考察稀疏矩阵的三种存储方法,需要对各方法有较深入的认识。

(1)对于一个n*n矩阵,该矩阵有P个非零元素,在十字链表表示法中,零元素不分配空间,但每行每列都应有各自的头指针,所以共有头指针2n个,共占用2n*4=8n个字节。对于非零元素,需要3个数据域(i,j,e)和2个指针域(right,down)。所以共有(3+2)P个域,共需5P*4=20P个字节。于是,采用该表示法共需20P+8n个字节。

(2)若采用二维数组表示法,则共有n^2元素,因此共需4n^2个字节。

(3)三元组表示法,零元素同样不占用空间,每个三元组需要3个数据域。除此之外,还需要一个数据域来存放存储矩阵的行数、列数以及非零元素的个数。所以共需要(P+1)*3*4=12P+12个字节。

2.设m*n阶稀疏矩阵A有t个非零元素,其三元组表表示为LTMA[1:(t+1),1:3],试问:非零元素的个数t达到什么程度时用LTMA表示A才有意义?

解:如果选用二维数组表示法来表示稀疏矩阵A,则需要m*n个存储单元。三元组表表示法的优点在于不需要存储零元素,节约了存储空间。而该三元组表共有3*(t+1)个存储单元,所以只有当3*(t+1)<m*n时,用LTMA表示A才有意义。

原创粉丝点击