- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)