串和数组-北京师范大学.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串和数组-北京师范大学

二、数组与矩阵——矩阵的压缩存储(6) 1.初始化十字链表 int InitCrossLinklist(CROSSLINKLIST *m,int row,int col,int sum) {/*初始化一个十字链表,成功则返回1,否则返回0*/ int i; /*根据行数和列数分配相应数量的行链和列链的表头结点*/ m-rhead=(CROSSNODEPTR)malloc(row*sizeof(CROSSNODE)); m-chead=(CROSSNODEPTR)malloc(col*sizeof(CROSSNODE)); if(m-rhead==NULL||m-chead==NULL) return 0; /*分配失败*/ for(i=0;irow;i++) m-rhead[i].right=NULL; /*将所有行链设为空链*/ for(i=0;icol;i++) m-chead[i].down=NULL; /*将所有列链设为空链*/ m-rnum=row; m-cnum=col; m-sum=sum; /*设置行数、列数和非零元素的个数*/ return 1; } 二、数组与矩阵——矩阵的压缩存储(7) 2.建立一个十字链表的稀疏矩阵 void InputData(CROSSLINKLIST *m) /*建立一个存储数据的十字链表*/ { int len,count; CROSSNODEPTR p,q; int i,j; elemtype v; int row,col,sum; scanf(%d,%d,%d,row,col,sum); /*获取行数、列数和非零元素个数*/ if(!InitCrossLinklist(m,row,col,sum))/*初始化十字链表*/ { printf(no enough memory\n); exit(0); } count=0;/*计数器清零*/ while(1) { scanf(%d,%d,%d,i,j,v);/*输入三元组数据*/ if(i=0im-rnumj=0jm-cnum) /*三元组数据合法*/ { p=(CROSSNODEPTR)malloc(sizeof(CROSSNODE)); if(!p) /*分配失败*/ {printf(no enough memory\n); return; } p-i=i; p-j=j; p-v=v; /*设置三元组结点p的数据域*/ 二、数组与矩阵——矩阵的压缩存储(8) /*开始按列序插入行链,读者应该很熟悉操作细节了*/ q=m-rhead[i]; while(q-right!=NULLq-right-jj) q=q-right; p-right=q-right; q-right=p; /*开始按行序插入列链*/ q=m-chead[j]; while(q-down!=NULLq-down-ii) q=q-down; p-down=q-down; q-down=p; count++; if(count==m-sum)break;/*数据输入完毕*/ } else/*三元组数据非法*/ { printf(illegal input data\n); break; } }//while } 二、数组与矩阵——矩阵的压缩存储(9) 3.销毁十字链表 void DestroyCrossLinklist(CROSSLINKLIST *m) /*销毁一个十字链表*/ { CROSSNODEPTR p; int i; for(i=0;im-rnum;i++) {/*沿着行链,释放链上所有的三元组结点*/ while(m-rhead[i].right!=NULL) { p=m-rhead[i].right; m-rhead[i].right=p-right; free(p); } } free(m-rhead); free(m-chead); /*释放行链和列链表头结点数组*/ m-rhead=m-chead=NULL; m-rnum=0; m-cnum=0; m-sum=0; /*其他成员设置成安全值*/ } 二、数组与矩阵——稀疏矩阵的转置(1) 转置的含义: 三元组数组的转置算法 遍历三元组数组,记下这个稀疏矩阵中每列的非零元素个数,存

文档评论(0)

wangyueyue + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档