DBS第四章s.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DBS第四章s,sdbs数据库,sdbs数据库首页,奇迹暖暖第四章s攻略,奇迹暖暖第四章s,奇迹暖暖第四章攻略,奇迹暖暖第四章,奇异人生第四章,前尘旧梦第四章,冒险岛黑色天堂第四章

三元组表 表示的C语言描述如下: #define MaxSize 101 /* 最多可能的非零元素个数*/ typedef int T; typedef struct term{ int Row, Col; T Value; }Term; typedef struct triples{ int Rows, Cols, NonZeros; Term Elements[MaxSize]; }Triples; typedef Triples SparseMatrix; 其中,结构类型Term是三元组类型,而Triples为三元组表类型,在Triples类型中Rows是矩阵的行数,Cols是列数,Nonzeros是矩阵的非零元素的个数。数组Elements存储为非零元素的三元组表。 ---- 除了三元组表方式外,还可以设计稀疏矩阵的其他顺序表示方式,如伪地址方式。在伪地址方式下,非零元素按行优先顺序存储,以伪地址作为地址检索的关键字。矩阵Am(n的非零元素aij的伪地址定义为: 这实际上是一个普通的二维数组按行优先顺序存储在一维数组中时,元素aij在一维数组中的下标。如果只保存非零元素,并以此下标值作为关键字顺序排列,便得到所谓的稀疏矩阵的伪地址表示法。图4-13给出了图4-12(a)所示的稀疏矩阵A的伪地址表示。可以看出,伪地址表示比三元组表更节省空间。在查找元素aij时,由于表是按元素的伪地址递增排序的,所以应先计算下标i, j的伪地址,然后可使用顺序搜索或二分搜索得到元素aij。采用二分搜索查找一个元素的时间复杂度为O(lbn)。有关顺序表的搜索方法将在第7章中介绍。 k[0]=0; for (i=1; icols; i++) k[i]=k[i-1]+num[i-1]; for (i=0; inonzeros; i++) { j=k[a.Elements[i].Col]++; b.Elements[j].Row=a.Elements[i].Col; b.Elements[j].Col=a.Elements[i].Row; b.Elements[j].Value=a.Elements[i].Value; } } return b; } O(Cols+NonZeros) 求K[i] 转置 如果对算法稍加改动,还可以省去数组num和k中的一个数组,即先以数组k[i]保存三元组表A的第i列的非零元素个数,然后仍使用数组k[i],保存矩阵A中第i列(即B中第i行)第一个非零元素在数组B中的下标。 col 0 1 2 3 4 5 k[col] k[col] 7 0 2 7 3 5 0 0 0 0 0 0 1 1 1 1 1 2 2 2 我们使用下列程序段计算数组k,其中省略了数组num,但使用了两个变量x和y。 for (i=0; icols; i++) k[i]=0; for (i=0; inonzeros; i++) k[a.Elements[i].Col]++; y=0; for (i=0; icols; i++){ x=k[i]; k[i]=y; y=y+x; } 非零元素个数 【程序4-5】 函数Retrieve。 BOOL Retrieve(List lst, int pos, T* x) { Node* p; if (pos 0 || pos =lst-Size){ printf(Out of Bounds); return FALSE; } p=set_pos(lst, pos); *x=p-Element; return TRUE; } 合理性检查 线性表的链接存储表示的优缺点: (1)优点: 可动态申请存储空间; 单链表中,在一个结点的后面插入一个新结点,或删除指定结点的后继结点的操作十分容易; (2)缺点: 查找指定位置元素效率低; 链接存储需要额外的指针域 线性表的顺序存储表示的优缺点: (1)优点: 随机存取; 顺序表的空间都用于存放元素; (2)缺点: 在指定位置上的插入、删除操作效率低; 必须按事先估计的最大元素个数分配连续的存储空间,难以临时扩大。 课堂提要 第4章 线性表和数组 4.1线性表 4.1.1 线性表ADT 4.1.2 线

文档评论(0)

mydoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档