- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》习题课;第2章 线性表;在线性表中最常用的操作是存取第i个元素及其前驱的值,可采用_ABCD_存储方式。
A.顺序表 B.单向链表
C.双向循环链表 D.单向循环链表
假设两个按元素值递增有序排列的线性表A和B,均以单链表作为存储结构,请编写算法,将A表和B表归并成一个按元素值递减有序排列的线性表C,并要求利用原表的(即A表和B表的)结点空间存储表C。
;void merge(Linklist A,Linklist B,Linklist C)
{
Linklist pa,pb,p;
pa = A-next;
pb = B-next;
C = A;
C-next = NULL;
free(B);
; while(pa pb)
{
if(pa-data = pb-data)
{
p = pa;
pa = pa-next;
p-next = C-next;
C-next = p;
}
; else
{
p = pb;
pb = pb-next;
p-next = C-next;
C-next = p;
}
}
; if(!pa)
{
while(pb)
{
p = pb;
pb = pb-next;
p-next = C-next;
C-next = p;
}
}
; else if(!pb)
{
while(pa)
{
p = pa;
pa = pa-next;
p-next = C-next;
C-next = p;
}
}
}
;建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位,并在此链表上实现对二进制数加1的运算。(假设链表L为从低位到高位)
void AddOne(Linklist L)
{
Linklist p = L-next;
while(p-next p-data == 1)
{
p-data = 0;
p = p-next;
}
; if(p-next)
p-data = 1;
else
{
if(p-data == 0)
p-data = 1;
else
{
p-data = 0;
Linklist q = (Linklist)malloc(sizeof(Node));
; q-data = 1;
q-next = NULL;
p-next = q;
}
}
return;
}
;第三章 栈和队列;试利用栈编写计算下列递归函数的非递归形式的算法。
0, m = 0,n ≥ 0
g(m,n)=
g(m - 1,2n)+n, m 0,n ≥ 0
(程序);第6章 树和二叉树;根据先序序列和中序序列确定二叉树
将二叉树转化为树:
二叉树中每个结点都对应于树中每个结点;
二叉树中某结点的左孩子为树中该结点的???一个孩子;
二叉树中某节点的右孩子为树中该结点的右兄弟。
;假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为:
0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10
构造哈夫曼树的算法步骤:(P184)
找最小树:在森林F中选择两棵结点权值最小的二叉树,作为一棵新二叉树的左右子树,标记新二叉树的根结点权值为其左、右子树的根结点权值之和;
删除与加入:从F中删除被选中的那两棵二叉树,同时把新构成的二叉树加入到森林F中。
;(1)0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10
;(2)0.07,0.19,0.06,0.32,0.21,0.10,0.05
;(3)0.07,0.19,0.32,0.21,0.10,0.11
;(4)0.19,0.32,0.21,0.11,0.17
;(5)0.19,0.32,0.21,0.28
;(6)0.32,0.28,0.40
;(7)0.40,0.60
;已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。
int leaf(Bitree T)
{
if(!T)
return 0;
if(!T-Lchild !T-Rchild)
return 1;
return(leaf(T-Lc
文档评论(0)