《算法与数据结构》-期中试卷.docVIP

  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文档。上传文档
查看更多
《算法与数据结构》课程期中试卷 得分 评卷人一、判断题(本大题共10小题。每小题1分,共10分。) (注意:将判断结果填入以下表格中。对的打√,错的打×。)1. 算法分析的目的是研究算法中输入和输出的关系。( 错 ) 2. 可以随机访问任一元素是链表具有的特点。(  错) 3. 用一维数组存储一棵完全二叉树是有效的存储方法。(对  ) 4. 在队列第i个元素之后插入一个元素不是队列的基本运算。( 错 ) 5. Tail(Tail(Head(((a,b),(c,d)))))= (b)。(  ) 6. 如果一个叶子是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历下的最后 一个结点。(  错) 比如只有根节点和左子树的特殊情况。7. 由权值分别为3, 8, 6, 2的叶子生成一棵哈夫曼树,它的带权路径长度为35。(对  ) 带权路径长度=1*8+2*6+3*3+3*2=35(书P146)逻辑结构、存储结构和数据的操作(运算)三个方面))广义表的概念 ?? 广义表的定义 广义表是线性表的推广。 广义表一般记作LS=(d0,d1,...dn-1) 其中,LS是广义表(d1,d2,...dn)的名称,n是它的长度.在线性表的定义中,ai(1=i=n)只限于是单个元素.而在广义表的定义中,di可以是单个元素。也可以是广义表,分别称为广义表LS的单元素和子表。习惯上,用大写字母表示广义表的名称,用小写字母表示单元素。当广义表LS非空时,称第一个元素d0为表头(Head),称其余元素组成的表(d1,d2,...dn-1)是LS的表尾(Tail)。 显然,广义表的定义是一个递归的定义,因为在描述广义表时又用到了广义表的概念。下面列举一些广义表的例子。   1) A=( ); A是一个空表,它的长度为0。   2) B=( e );  广义表B只有一个单元e,B的长度为1。   3) C=( a,( b,c,d ) ); 广义表C的长度为2,两个元素分别为单元素a和子表( b,c,d )。   4) D=( A,B,C ); 广义表D的长度为3,三个元素都是列表。显然,将子表的值代入后,则有D=( ( ),( e ), ( a,( b,c,d ) ) )。   5) E=( a,E ); 这是一个递归的表,它的长度为2。E相当于一个无限的广义表E=( a,( a,( a......) ) )。 从上述定义和例子可推出广义表的三个重要结论:   1)  广义表的元素可以是子表,而子表的元素还可以是子表,...。   2)  广义表可为其他广义表所共享。   3)  广义表可以是一个递归的表,即广义表也可以是其本身的一个子表。 广义表的深度 一个广义表的深度是指该广义表展开后所含括号的层数。 例如,A=(b,c)的深度为1,B=(A,d)的深度为2,C=(f,B,h)的深度为3。 广义表的存储结构 由于广义表的元素类型不一定相同,因此,难以用顺序结构存储表中元素,通常采用链接存储方法来存储广义表中元素,并称之为广义链表。 采用链式存储结构,每个数据元素可用一个结点表示: · (1)表结点,用以表示子表 · (2)元素结点,用以表示单元素 第一种表示 用C语言描述结点的类型如下: typedef struct node { int tag; union{struct node *hp,*tp; char data; }dd; }NODE; 第二种表示 用C语言描述结点的类型如下: typedef struct node { int tag; union{struct node *hp; char data; }dd; struct node *tp; }NODE; 广义表的递归算法 一、求广义表的深度 深度公式: (1)maxdh(p)=0 当p-tag=1 (2)maxdh(p)=1 当空表(p-tag=1p-dd.sublist=NULL) (3)maxdh(p)=max(maxdh(p1),...,maxdh(pn))+1 其余情况 其中p=(p1,p2,...,pn) int depth(NODE *p) /*求表的深度函数 */ { int h,maxdh; NODE *q; if(p-tag==0) return(0); else if(p-tag==1p-dd.sublist==NULL) return 1; else { maxdh=0; while(p!=NULL) { if(p-tag==0) h=0; else {q=p-dd.sublist; h=depth(q); } if(hmaxdh)maxdh=h; p=p-link; } return(maxdh+1); }

文档评论(0)

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

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

1亿VIP精品文档

相关文档