网站大量收购独家精品文档,联系QQ:2885784924

数据结构作业(1).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业 3.8 根据大O和Ω的定义,写出下列表达式的上限和下限。注意确定适当的c和n0: (a)cn c=c1,n0=1时,c1n在O(n)中。 c=c1,n0=1时,c1n在Ω(n)中。 (b)c2n3+c3 对于n1,c2n3+c3≤c2n3+c3n3≤(c2+c3)n3,T(n)在O(n3)中,c=c2+c3,n0=1。 对于n1,c2n3+c3≥c2n3,T(n)在Ω(n3)中,c=c2,n0=1。 (c)c4nlogn+c5n 对于n2,c4nlogn+c5n≤c4nlogn+c5nlogn≤(c4+c5)nlogn,T(n)在O(nlogn)中,c=c4+c5,n0=2。 对于n2,c4nlogn+c5n≥c4n+c5n≥(c4+c5)n,T(n)在Ω(n)中,c=c4+c5,n0=2。 (d)c62n+c7n6 对于n1,c62n+c7n6≤c6n6+c7n6≤(c6+c7)n6,T(n)在O(n6)中,c=c6+c7,n0=1。 对于n1,c62n+c7n6≥c62n+c72n≥(c6+c7)2n,T(n)在Ω(2n)中,c=c6+c7,n0=1。 3.9 对于下列各组函数式f(n)与g(n)的关系为:或者f(n)在O(g(n))中,或者f(n)在Ω(g(n))中,或者f(n)=Θ(g(n))。对于每一组函数,确定两个函数究竟是哪种关系,并简述理由。 (a)f(n)=logn2;g(n)=logn+5 f(n)=2logn,n32时,2logn≥logn+5,c=1,n0=32,f(n)在Ω(g(n))中。 (b)f(n)=;g(n)=logn2 n2时,≤logn2,c=1,n0=2,f(n)在O(g(n))中。 (c)f(n)=log2n;g(n)=logn n2时,log2n≥logn,c=1,n0=2,f(n)在Ω(g(n))中。 (d)f(n)=n;g(n)=log2n n16时,n≥log2n,c=1,n0=16,f(n)在Ω(g(n))中。 (e)f(n)=nlogn+n;g(n)=logn nlogn+n≥logn,f(n)在Ω(g(n))中。 (f)f(n)=10;g(n)=log10 10和log10都是常量,f(n)在Θ(g(n))中。 (g)f(n)=2n;g(n)=10n2 n9时,2n≥10n2,c=1,n0=9,f(n)在Ω(g(n))中。 (h)f(n)=2n;g(n)=3n 2n≤3n,f(n)在O(g(n))中。 作业 4.18 已知Q是一个非空队列,S是一个空栈。仅用栈和队列的ADT函数和一个成员变量X编写一个算法,使得Q中的元素倒置。 void reverse(Queue Q, Stack S) { ELEM X; while(!Q.isEmpty()) { X=Q.dequeue(); S.push(X); } while(!S.isEmpty()) { X=S.pop(); Q.enqueue(X); }} 4.20 编译器和文本编辑器的一个存在的普遍问题时判断一个字符串中的圆括号(或者其他括号)是否平衡且匹配。例如,字符串“((())())()”中的圆括号恰好平衡且匹配,但是字符串“)()(”中的圆括号不平衡,字符串“())”中的圆括号不匹配。 (a)给出一个算法,当字符串中的圆括号恰好平衡且匹配时返回true,否则返回false。用一个栈来记录当前扫描到的未匹配的左圆括号。提示:从左到右扫描一个合法的字符串,保证任何时候所遇到的右圆括号不会比左圆括号多。 bool balance(String str) { Stack S; int pos=0; while(str.charAt(pos)!=NULL) { if(str.charAt(pos++)==’(’) S.push(’(’); else if(str.charAt(pos++)==’)’) if(S.isEmpty()) return FALSE; else S.pop(); } if (S.isEmpty()) return TRUE; else return FALSE; } (3)试写一算法,实现单链表的就地逆置,即利用原表的存储空间将线性表(a0, a1, …, an-1)逆置为(an-1, an-2, …, a0)。 void inverse(LinkList L) { p=L-next; L-next=NULL; while ( p) { succ=p-next;

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档