数据结构教学作者主编马世霞第4章节串和数组课件幻灯片.ppt

数据结构教学作者主编马世霞第4章节串和数组课件幻灯片.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.稀疏矩阵 一个阶数较大的矩阵中的非零元素个数s相对于矩阵元素的总个数t很小时,即非零元素个数s占矩阵元素的总个数t的25%~30%时,称该矩阵为稀疏矩阵称。例如一个100×100的矩阵,若其中只有100个非零元素,就可称为稀疏矩阵。 三元组线性表中结点的定义: #define MaxSize 100 /*非零元素的个数最多为100*/ typedef struct { int row; /*该非零元素的行下标*/ int col; /*该非零元素的列下标*/ DataType e; /*该非零元素的值*/ }Triple3; typedef struct { int n; /*矩阵的行总数*/ int m; /*矩阵的列总数*/ int t; /*矩阵的非零元素的总个数*/ Triple3 data[MaxSize+1]; /*三元组顺序表*/ }TSMatrix; (1)将稀疏矩阵的三元组表的行列互换, 即(i,j,x)——(j,i,x)。 (2)为了保证转置后的矩阵的三元组表也是以“行序为主序”进行存放,则需要对行、列互换后的三元组表按行下标(即A的列下标)大小重新排序,如图4-6所示。 【例4-3】用三元组表实现稀疏矩阵的转置运算。 #includestdio.h #includestdlib.h #define MaxSize 100 /*非零元素的个数最多为100*/ typedef int DataType; typedef struct { int row,col; /*行、列下标*/ DataType e; /*非零元素*/ }Node; typedef struct { int m,n,k; /*矩阵的行、列、非零元素的总个数*/ Node data[MaxSize]; /*三元组顺序表*/ }TSMatrix; void Init_matrix(TSMatrix *A) { int i; printf(\n输入行号,列号,非零元素个数:(用空隔间隔开)); scanf(%d %d %d,A-m,A-n,A-k); for(i=0;iA-k;i++) { printf(第%d个三元组的行号 列号 非零元素值,i+1); scanf(%d %d %d,A-data[i].row,A-data[i].col,A-data[i].e); } } void print(TSMatrix A) { int i; for(i=0;iA.k;i++) printf(\n%d,%d,%d,A.data[i].row,A.data[i].col,A.data[i].e); } void TransposeTSMatrix(TSMatrix A,TSMatrix B)/*矩阵转置,用三元表表示*/ { int p, q, col; B.m=A.n; B.n=A.m; B.k=A.k; if(B.k!=0) { q=0; for(col=1;col=B.n;col++) { for(p=0;pB.k;p++) { if(A.data[p].col==col) { B.data[q].row=A.data[p].col; B.data[q].col=A.data[p].row; B.data[q].e=A.data[p].e; q++; } } } } } void main() { TSMatrix A,B; Init_matrix(A); TransposeTSMatrix(A,B); printf(\n原矩阵: ); print(A); printf(\n转置矩阵: ); print(B); printf(\n); } 4.6 应用举例 要求:利用串存储结构实现学生个人信息存储和变更。 实现: (1)输入需要变更的信息,进行模式匹配。 (2)输入要替换的新内容,如果匹配成功,那么就会进行替换,否则,不会替换,最后输出新的个人信息。 知识点:串的存储结构、串基本操作的实现。 main() { int i; char s[100]={Li Mings telephone number:123456\0}; char t[100],v[100]; printf(Li Mings telephone number:123456\n); prin

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档