第五章数组与广义表1.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文档。上传文档
查看更多
第五章数组与广义表1

POS(k)表示稀疏矩阵A中第k行的第一个非零元素 (如果有的话)在三列二维数组B中的行号; NUM(k)表示稀疏矩阵A中第k行中非零元素的个数。 POS(1)=2 POS(k)=POS(k-1)+NUM(k-1) , 2≤k≤m * 构造POS与NUM向量 输入:与稀疏矩阵A对应的三列二维数组B。 输出:POS与NUM向量。 PROCEDURE POSNUM(B,POS,NUM) t=B(1,3) [非零元素个数] m=B(1,1) [稀疏矩阵行数] FOR k=1 TO m DO NUM(k)=0 [置NUM向量初值] FOR k=2 TO t+1 DO NUM(B(k,1))=NUM(B(k,1))+1[设置NUM向量] POS(1)=2 FOR k=2 TO m DO POS(k)=POS(k-1)+NUM(k-1) [设置POS向量] RETURN * 矩阵转置 * * 输入:稀疏矩阵A的三列二维数组表示。 输出:转置矩阵D(三列二维数组表示)。 PROCEDURE TRAN(A,D) k=A(0,2) [转置稀疏矩阵B的行数] t=A(0,3) [非零元素个数] D(0,1)=k; D(0,2)=A(0,1); D(0,3)=A(0,3) [置转置矩阵信息] IF (t=0) RETURN kk=1 * struct ab { int i; int j; ET v;}; tran(a,d) struct ab *a, *d; { int k,t,kk,m,n; k=a[0].j; t=(int)(a[0].v); d[0].i=k; d[0].j=a[0].i; d[0].v=a[0].v; if (t==0) return; kk=1; for (m=1/0; m<=k/k-1; m++) for (n=1; n<=t; n++) { if (a[n].j==m) { d[kk].i=a[n].j; d[kk].j=a[n].i; d[kk].v=a[n].v; kk=kk+1; } } return; } * 十字链表 * 用十字链表表示稀疏矩阵的结构特点 (1)稀疏矩阵的每一行与每一列均用带表头结点的循环链 表表示。 (2)表头结点中的行域与列域的值均置为0 (即row=0,col=0)。 (3)行、列链表的表头结点合用,且这些表头结点通过值 域(即val)相链接,并再增加一个结点作为它们的 表头结点H,其行、列域值分别存放稀疏矩阵的行数 与列数。 只要给出头指针H的值,便可扫描到稀疏矩阵中的任意一个非零元素。 * * * * 十字链表的矩阵相加 #include stdio.h struct node { int row, col, val; struct node * right, * down}; typedef struct node NODE; NODE * a, * b, * c; NODE * create_null_mat(m,n) int m, n; { NODE *h, * p, * q; int k; h = (NODE*)malloc (sizeof(NODE) ); h-row =m; h-col= n;h-val=0; h-right=h; h-down=h; p=h; for (k=0; km; k++ ) {q=(NODE*)malloc(sizeof(NODE) ); q-col=1000;q-right=q; q-down=p-down; p-down=q; P=q; } p=h; for (k=0;kn;k++ ) {q=(NODE * )malloc (sizeof(NODE) ); q-row=1000 ; q-down=q; q-right=p-right ; p-right=q; p=q; } return(h); } * NODE * search_row_last( a , i) NODE *a ; int i; { NODE *p, *h; int k; p = a ; for (k=0; k=i; k ++)

文档评论(0)

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

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

1亿VIP精品文档

相关文档