《数据结构-C语言描述》课件第5章.ppt

《数据结构-C语言描述》课件第5章.ppt

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

图5.24广义表A、B、C、D的存储结构图5.25广义表的另一种结点结构Tag=1hptpTag=1atomtp表结点原子结点图5.26广义表的第二种存储结构这种存储结构的形式说明如下:typedefenum{ATOM,LIST}ElemTag;/*ATOM=0,表示原子;LIST=1,表示子表*/typedefstructGLNode{ElemTagtag;union{AtomTypeatom;structGLNode*hp;}atom-hp;/*atom-hp是原子结点的值域atom和表结点的表头指针域hp的联合体域*/structGLNode*tp;}*GList;下面以广义表的头尾链表存储结构为例,介绍广义表的几个基本操作。(1)求广义表的表头和表尾。GListHead(GListL){if(L==NULL)return(NULL);/*空表无表头*/if(L-tag==ATOM)exit(0); /*原子不是表*/elsereturn(L-atom-htp.htp.hp);}GListTail(GListL){if(L==NULL)return(NULL);/*空表无表尾*/if(L-tag==ATOM)exit(0);/*原子不是表*/elsereturn(L-atom-htp.htp.tp);}(2)求广义表的长度和深度。intLength(GListL){intk=0;GLNode*s;if(L==NULL)return(0); /*空表长度为0*/if(L-tag==ATOM)exit(0); /*原子不是表*/s=L;while(s!=NULL) /*统计最上层表的长度*/{k++;s=s-atom-htp.htp.tp;}return(k);}intDepth(GListL){intd,max=0;GLNode*s;if(L==NULL)return(1);/*空表深度为1*/if(L-tag==ATOM)return(0);/*原子深度为0*/s=L;while(s!=NULL)/*求每个子表的深度的最大值*/{d=Depth(s-atom-htp.htp.hp);if(dmax)max=d;s=s-atom-htp.htp.tp;}return(max+1);/*表的深度等于最深子表的深度加1*/j=1;for(k=1;k=A.n;k++)for(i=1;i=A.len;i++)if(A.data[i].col==k){B-data[j].row=A.data[i].colB-data[j].col=A.data[i].row;B-data[j].e=A.data[i].e;j++;}}}【算法5.1基于稀疏矩阵的三元组表示矩阵的转置算法】算法的时间耗费主要是在双重循环中,其时间复杂度为O(A.n×A.len),最坏情况下,当A.len=A.m×A.n时,时间复杂度为O(A.m×A.n2)。采用正常方式实现矩阵转置的算法时间复杂度为O(A.m×A.n)。方法二:

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档