DS习题.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文档。上传文档
查看更多
1、利用原来的存储空间实现单链表的就地逆置。 void resverse(LinkList L) { ??? p=L-next;?? //L为单链表的头结点 L-next=null; ??????????? while (p){ q=p;?p=p-next; q-next=L-next; L-next=q; } } 2、编写计算数组元素累加和的递归函数 templateclass T T Rsum(T a[ ], int n) { / /计算a[0: n-1]的和 if (n 0) return Rsum(a, n-1) + a[n-1]; return 0; } 3、编程实现在带头结点的head单链表的结点a之后插入新元素x。 class node { public: elemtype data; node *next; }; void lkinsert(node *head, elemtype x) { node *s, *p; s= new node; s-data=x; p=head-next; while ( p!=NULL)(p-data!=a ) p=p-next; if ( p==NULL ) cout”不存在结点 a ! ”; else { s-next=p-next ; p-next=s; } } 4、在栈顶指针为 HS 的链栈中编写计算该链栈中结点个数的函数。 int count(node *HS) { node *p; int n=0; p=HS; while (p!=NULL){ n++; p=p-next; } return(n); } 5、给定二叉树的两种遍历序列,分别是: 前序遍历序列:ABECDFGHIJ; 中序遍历序列:EBCDAFHIGJ,试画出二叉树。 当前序序列为ABECDFGHIJ,中序序列为EBCDAFHIGJ时,逐步形成二叉树的过程如下图所示: AAAA A A A A FBBFFB F B B F F B GECGECHIGJCDEFHIGJ G E C G E C HIGJ CD E FHIGJ HDJHIJD H D J HI J D IEBCD I EBCD 6、编写递归算法,计算二叉树中叶子结点的数目。 int NumOfLeaves(Node *t) const { if (t == NULL) return 0; else if(t-left==Null t-right==Null) return 1; else return NumOfLeaves(t-left) + NumOfLeaves ( t-right); } 7、写出求二叉树深度的算法。 int Depth(Node *t) const { if (t == NULL) return 0; else {int lt = Depth (t-left), rt = Depth (t-right); return 1 + ( (lt rt) ? lt : rt); } } 8、编写递归算法,求二叉树中以元素值为x的结点为根的子树的深度。 int Get_Sub_Depth(BinaryTree T,int x)//求二叉树中以值为x的结点为根的子树深度 { if(T-data==x) { coutGet_Depth(T)endl; //找到了值为x的结点,求其深度 exit 1; } } else { if(T-lchild) Get_Sub_Depth(T-lchild,x); if(T-rchild) Get_Sub_Depth(T-rchild,x); //在左右子树中继续寻找 } }//Get_Sub_Depth int Get_Depth(BinaryTree T)//求子树深度的递归算法 { if(!T) return 0; else { m=Get_Depth(T-lchild); n=Get_Depth(T-rchild); return (mn?m:n)+1; } }//Get_Depth 9、画出一次一个地将10、12、1、14、6、5、8、15、3、9、7、4、11、13和2插入一个初始为空的最小堆的结果。 10、改写Binary heap的insert函数,在0号数组元素中存放插入项的副本。 void insert( const Comparable x ) { if( current

文档评论(0)

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

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

1亿VIP精品文档

相关文档